[Cascavel-pm] namespaces [off-topic]

eden edencardim em gmail.com
Sexta Agosto 24 09:22:45 PDT 2007


On 8/24/07, Nilson Santos Figueiredo Junior <acid06 em gmail.com> wrote:
> On 8/24/07, eden <edencardim em gmail.com> wrote:
> > Errm, não se for implementado da forma correta. A idéia do Singleton é
> > de que o cliente da Classe não precisa saber quantas instâncias
> > existem por trás das cenas. Um exemplo típico de bom uso de Singletons
> > é para auxiliar na implementação transparente do padrão Flyweight.
>
> Mas o Flyweight não é bem um Singleton. É garantir que não existem
> vários objetos iguais repetidos, mas existirão várias instâncias de
> uma mesma classe.

Você pode ter uma factory como um singleton que é responsável por
prototipar os objetos e usá-los no lugar de instâncias
recém-construídas. Se houverem múltiplas instâncias da factory,
haverão multiplas instâncias dos protótipos e o padrão vai por agua
abaixo.

> A idéia é que quando você está desenvolvendo você não deveria assumir
> que quem vai utilizar sua classe deve saber ou não das coisas. Se, por
> algum motivo qualquer, o usuário queira instanciar dois objetos (ou
> fazer qualquer outra coisa mesmo), ele deveria ser capaz de fazer isso
> sem malabarismos. Essa é a solução ótima no quesito reusabilidade.

Bem, a API da classe tem que ser bem definida. O usuário pode *achar*
que está criando dois objetos, quando na verdade só existe um, desde
que a classe faça o que alega fazer, não interessa quantos objetos
existem de verdade, isso se chama "design by contract".

> Aliás, eu nem começo a falar mal de outras linguagens implementando
> controle de acesso (private, protected, etc) porque daí eu acredito
> que iria enfrentar *muita* oposição. ;-)

Existe uma diferença sutil mas substancial diferença entre controle de
acesso e transparência de implementação.

-- 
edenc.vox.com


Mais detalhes sobre a lista de discussão Cascavel-pm