TEMPLATE METHOD - “Definir o esqueleto de um algoritmo em uma operação, postergando alguns passos para as subclasses. Template Method permite que subclasses redefinam certos passos de um algoritmo sem mudar a estrutura do mesmo.” (thread) (reutilização de código) (herança)
COMPOSITE - “Compor objetos em estruturas de árvore para representarem hierarquias partes-todo. Composite permite aos clientes tratarem de maneira uniforme objetos individuais e composições de objetos.” 9.1. Use Composite quando: Um conjunto deve ser tratado como um indivíduo, tomando precauções para evitar loops infinitos, já que o Composite depende de implementações recursivas.
Observações:
• Um filho pode substituir um pai.
• Agregação dele mesmo.
• Recursividade.
FACTORY METHOD: “Define uma interface (Fábrica) para criar um objeto, deixando subclasses (concretas) decidirem qual classe instanciar. Permite que uma classe (Fábrica) delegue para suas subclasses concretas a responsabilidade de criação de um Produto.” Usa a herança.
ADAPTER: “Converte a interface de uma classe em outra interface esperada pelos clientes. O Adapter permite que certas classes trabalhem em conjunto, pois de outra forma seria impossível por causa de suas interfaces incompatíveis.”
Class Adapter: usa herança múltipla para adaptar uma interface à outra. (escopo de classe)
Object Adapter: O adaptador de objeto depende da composição de objetos.