在模板方法模式中,在父类(抽象类)中定义流程,将具体实现交由子类实现,如果将模板方法模式用于生成实例对象,那么模板方法模式就衍生为工厂方法模式。
父类决定实例生成的方式,但是不决定实例的类型,具体的实现交给子类实现。
示例
- 工厂类
public abstract class AbstractFactory {
public AbstractProduct createInstance() {
AbstractProduct instance = create();
doSomeThing(instance);
return create();
}
protected abstract AbstractProduct create();
protected abstract void doSomeThing(AbstractProduct instance);
}
- 抽象产品类
public abstract class AbstractProduct {
public abstract void use();
}
- 工厂实现类
public class CardFactory extends AbstractFactory {
@Override
protected AbstractProduct create() {
return new Card();
}
@Override
protected void doSomeThing(AbstractProduct instance) {
System.out.println("nothing");
}
}
- 具体产品类
public class Card extends AbstractProduct {
@Override
public void use() {
System.out.println("use product card");
}
}
- Client
public class Client {
public static void main(String[] args) {
AbstractFactory factory = new CardFactory();
AbstractProduct card = factory.createInstance();
card.use();
}
}
总结
此模式是模板方法模式的应用。
网友评论