Um fabricante de aeronaves produz modelos turboélices e turbofans. Para auxiliar os pilotos das aeronaves que fabrica, a empresa desenvolveu um software para checklist de decolagem. A classe principal desse software é exibida a seguir. public abstract class Checklist { public void check( ) { step01(); step02(); step03(); step04(); } void step01( ) { // código irrelevante para a questão } void step02( ) { // código irrelevante para a questão } void step03( ) { // código irrelevante para a questão } abstract void step04( ); } O checklist é composto de quatro etapas. As três primeiras, step01, step02 e step03, são comuns aos modelos turboélices e turbofans, mas a quarta etapa depende do tipo de propulsor. Para criar um design flexível que dê suporte a outros modelos sem alterações no código existente, a equipe de desenvolvimento definiu um método abstrato para o quarto passo. Ele deverá ser implementado pelas subclasses de Checklist que implementem o quarto passo de acordo com o propulsor usado. Por exemplo, a classe Turboelice seria implementada da seguinte maneira: public class Turboelice extends Checklist { void step04( ) { // código irrelevante para a questão } } Desse modo, o checklist para turboélices seria executado de acordo com o trecho de código a seguir: Checklist c = new Turboelice(); c.check( ); Qual padrão de projeto foi empregado nesse design?
Singleton
Adapter
Strategy
Factory Method
Template Method