Pergunta

Meu professor é muito bom e eu tendem a entender seus pontos, mas este simplesmente passa por cima da minha cabeça. Ele explica o método de modelo em duas variantes;
- Unificação: a variante padrão, composta por uma classe abstrata com alguns métodos abstratos que definem as partes variantes do algoritmo fixo.
- Separação: sua própria variante (eu acho?) Onde uma classe contém o templatemethod () e usa a delegação em uma interface para variar as partes do algoritmo, que me parece exatamente com o padrão de estratégia.

Alguém pode ver qual é o ponto dele e como a variante de 'separação' é diferente do padrão de estratégia?
Anexei uma imagem contendo os dois padrões de seu livro (que ainda não foi publicado).

http://img64.imageshack.us/img64/3620/strategytemplate.jpg

Foi útil?

Solução

Eu nunca ouvi falar de uma "variante de separação" do padrão de método do modelo e concordo que ela se parece extremamente semelhante à estratégia. Mesmo se houver algum raciocínio sobre a propriedade da interface ou como você os invoca da perspectiva do cliente, dificilmente acho que há nenhum benefício em considerá -los diferentes padrões.

Outras dicas

Em uso comum, o método de modelo usa subclasses para fornecer os comportamentos variados. Com estratégia, você injetar um objeto de algoritmo. No seu exemplo, não há distinção útil entre Modelo (separação) e Estratégia. Dada a idade da gama et al O livro, introduzindo essa nova terminologia com a explicação adequada da diferença, provavelmente causará confusão quando você conversar com outros programadores. Evite usá -lo fora de suas lições.

O modelo permite acessar os membros protegidos na classe base. A estratégia permite que você desenvolva algoritmos de você mais acoplados com os objetos que os usam e permite injetar o mesmo algoritmo em muitos tipos diferentes de objeto.

Método de modelo:

  1. É um padrão de design comportamental
  2. É usado para criar um stub de método e adiar algumas das etapas da implementação para as subclasses. Consiste em certas etapas cuja ordem é fixa.
  3. Ele define as etapas para executar um algoritmo e pode fornecer implementação padrão que possa ser comum para todas ou algumas das subclasses.
  4. Modelo de superclasse Método chama métodos de subclasses,

Padrão de estratégia:

  1. É um padrão comportamental
  2. É baseado na delegação
  3. Ele muda as cortes do objeto modificando o comportamento do método
  4. É usado para alternar entre a família de algoritmos
  5. Ele muda o comportamento do objeto no tempo de execução. Um algoritmo será selecionado de uma família de algoritmo.

Diferenças básicas.

  1. Método do modelo usa herança e Estratégia usa composição
  2. o Método do modelo implementado pela classe base não deve ser substituído. Dessa forma, a estrutura do algoritmo é controlada pela super classe, e as Os detalhes são implementados nas sub -classes
  3. Estratégia Encapsula o algoritmo por trás de uma interface, que nos fornece capacidade de alterar o algoritmo no tempo de execução. Várias estratégias fornecem implementação diferente para a interface.

Dê uma olhada no JournalDev Método do modelo e Estratégia artigos para melhor compreensão junto com SOURCEMA Artigos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top