a) Decorator
b) Adapter
c) Builder
d) Observer
e) Chain of Responsibility
Aplicabilidade do Decorator:
- Wikipedia: "Acrescentar ou remover responsabilidades a objetos individuais dinamicamente"
- Enunciado: "Adicionar e retirar dinamicamente responsabilidades apenas aos objetos individuais"
.
https://pt.wikipedia.org/wiki/Decorator
OBS: não existe essa necessidade de ser 2 classes abstratas. Poderia ser 1 interface e 1 classe concreta
Confesso que fiquei um pouco confuso com a redação, no entanto, é possível resolver esta questão pelo método da exclusão. Vamos lá:
Item A) superclasse abstrata, por exemplo “ComponenteConta”, que também é superclasse de uma segunda classe, e essa segunda classe, também abstrata, será superclasse das várias classes concretas que representam as responsabilidades adicionais. (Padrão Comportamental: Chain Of Responsability)
Item B) classe, por exemplo “InterfaceConta”, que converte a interface de uma classe em outra interface que o cliente espera, evitando incompatibilidades causadas por interfaces diferentes. (Padrão Estrutural: Adapter)
Item C) classe, por exemplo “FabricaContas”, que separa a construção de um objeto complexo da sua representação, de forma que o mesmo processo de construção possa criar diferentes representações. (Padrão Criacional: Builder)
Item D) classe que define uma dependência um-para-muitos entre objetos, de forma que, quando o estado de um objeto da classe “Conta” é alterado, todos os outros objetos dependentes são notificados e podem implementar atualização automática de suas propriedades, em uma relação publicar-subscrever. (Padrão Comportamental: Observer)
Item E) classe abstrata, por exemplo “InterfaceConta”, cuja finalidade é definir a interface que permite que suas subclasses tratem uma requisição, sendo que as subclasses concretas são estruturadas em uma cadeia onde cada classe trata a requisição ou a envia para a classe sucessora, até que uma delas atenda a requisição. (Maldade do examinador que quis confundir nossa cabeça)