Padrão de Design de Estratégia

Olá a todos, amigos. Meu nome é Alex e sou desenvolvedor e criador de software profissional na indústria da web. Venho estudando idiomas há muitos anos, compartilhando minha experiência com outras pessoas.





Hoje eu quero falar com você sobre o padrão de design de estratégia. Vou tentar transmitir a você os princípios e a essência do modelo sem água e mostrar como aplicá-lo na prática.





Qual é o ponto?

Estratégia de padrão de projeto  ou padrão de projeto Estratégia  refere-se a padrões de projeto comportamentais. Sua tarefa é identificar algoritmos semelhantes que resolvam um problema específico. A implementação dos algoritmos é feita em classes separadas e a capacidade de selecionar algoritmos é fornecida em tempo de execução.





O template possibilita no processo de execução escolher uma estratégia (algoritmo, ferramenta, abordagem) para resolver o problema. 





Qual é o problema?

Vamos considerar as tarefas em cuja solução essa abordagem pode ser aplicada. 





Imagine que você se depara com a tarefa de escrever um portal da web para busca de imóveis. MVP ( Produto Mínimo Viável ) ou produto mínimo funcional foi projetado e priorizado por sua equipe de Gerentes de Produto e o portal deve ter funcionalidade para compradores de apartamentos. Ou seja, os usuários-alvo do seu produto são, em primeiro lugar, aqueles que procuram uma nova casa para comprar. Um dos recursos mais solicitados deve ser a capacidade de:





  • Selecione a área no mapa onde o comprador deseja comprar uma casa





  • E indique a faixa de preços dos preços dos apartamentos para filtragem.





, . , , , .





Product Manager' , , . - . , , . 





, - , .





. , . - - , , . 





, . . , , . , , , , .





, , . , , , , , . : 





  • -





  • -





  • , ,





  • ,





  • , , .





Superclasse com método de implementação de algoritmo unificado.
- .

?

















  • - , , .. 





- .   , . , , , . , , - - . -. 





, - . - -. 





Diagrama de classes do padrão de estratégia
Strategy

, -, . .





-, , doSearch(filters)



, , . 





, - , (, , , , ..), , , - -, , . , , backend, .





- - , . -  - , . , getData



, filters



. , -  setStrategy



, . , , , . 





, GOlang. - doSearch







Strategy.go
Strategy.go

, . , . Map



.





. struct



, Strategy



. , , , . :





FirstAlgorithm.go
FirstAlgorithm.go
SecondAlgorithm.go
SecondAlgorithm.go

. - . ? - , :





  • struct







  • initStrategy



    , -





  • struct setStrategy



    ,





  • getData



    , .





Context.go
Context.go

- . -, . getData



. , - ( - ) , . , , . :





Client.go
Client.go

:





First implements strategy map[role:1]







Second implements strategy map[role:2]







, . , , . .





- . , . PHP.





?

Strategy?





  1. . -, -. 





  2. - . -, -. 





  3. . . 





  4. . , -, .





Amigos, conhecemos o padrão de design comportamental Strategy . O modelo é usado para destacar algoritmos semelhantes que resolvem um problema específico. Vimos a implementação na linguagem GOlang com você , nos familiarizamos com as possibilidades da abordagem e descobrimos quando é melhor usá-la.





Fiquei feliz em falar com você, Alex Versus . Boa sorte!








All Articles