<?php
/**
 * Arquivo de declaração da classe FabricaDAO.
 */
class FabricaDAO
{
    /**
     * Mapa de classes instanciadas.
     *
     * @var array
     */
    private static $mapa = array();

    /**
     * Tipo de implementação da classe controladora.
     *
     * @var string
     */
    private static $implementacao = '';

    /**
     * Método estático que irá instanciar as classes controladoras utilizando o método singleton.
     *
     * @param  string $posicao
     */
    public static function fabricar($posicao = '')
    {
        if (!array_key_exists($posicao, self::$mapa)) {
            $classe = $posicao . self::$implementacao;
            self::$mapa[$posicao] = new $classe();
        }

        return self::$mapa[$posicao];
    }
}
