Diferença entre o método do modelo (separação) e o padrão de estratégia?
-
22-09-2019 - |
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).
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:
- É um padrão de design comportamental
- É 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.
- 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.
- Modelo de superclasse Método chama métodos de subclasses,
Padrão de estratégia:
- É um padrão comportamental
- É baseado na delegação
- Ele muda as cortes do objeto modificando o comportamento do método
- É usado para alternar entre a família de algoritmos
- 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.
- Método do modelo usa herança e Estratégia usa composição
- 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
- 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.