Padrão de cluster de classe Objective-C

5

Eu tenho muitas subluxas de uma classe. Eu escolho classe concreta com base no tipo (enum simples). Eu gosto de idéia de cluster de classe. Devo usá-lo ou apenas criar classe de fábrica (mas cada classe no objetivo-c é na verdade uma fábrica)?

Qual é a diferença entre padrão de fábrica e padrão de cluster de classe. Quando usá-lo em seu código e por quê?

    
por Denis Mikhaylov 02.04.2013 / 10:53
fonte

2 respostas

6

Não há realmente nenhuma diferença; um cluster de classes é uma implementação específica do padrão Factory. No cluster de classes, o inicializador é usado como o método de fábrica para decidir qual instância retornar.

Estilisticamente, o cluster de classe será familiar para os usuários de sua API porque é comum nos frameworks da Apple: as classes de coleção, classes numéricas e outras fazem uso do padrão. Ele também satisfaz o padrão de nível mais alto de Smalltalk e Objective-C, onde o objeto de classe é próprio uma fábrica para suas instâncias.

Além disso, o cluster de classe significa menos coisas para lembrar: em vez de pensar "Eu tenho que fazer um ThingFactory , em seguida, chamar [factory thingForCase: foo] " eles apenas olham para o inicializador para Thing , que é o que você provavelmente alcançar por padrão.

Existe uma situação na qual você poderia obter uma implementação mais "clássica" do Factory, que é (como discutido no encadeamento de comentários) onde os objetos que você pode retornar não serão necessariamente subclasses de um pai comum. No padrão de cluster de classe, há uma superclasse comum e o código do cliente trata o objeto que é retornado como uma instância dessa superclasse. Se essa restrição na hierarquia de tipos não for adequada ao seu caso, um cluster de classes não funcionará.

    
por 02.04.2013 / 11:29
fonte
-1

O cluster de classe significa menos coisas para lembrar: em vez de pensar "Eu tenho que fazer um ThingFactory e chamar [factory thingForCase: foo]" eles apenas olham para o inicializador do Thing, que é o que você provavelmente alcançaria padrão.

    
por 18.09.2015 / 09:13
fonte