意图:定义一个用于创建对象的接口,让子类决定实现化哪一个类。将实例化推迟到子类。
问题:一个类需要实例化另一个类的派生类,但不知道是哪一个。Factory Method允许派生类进行决策。
解决方案:派生类对实例化哪个类和如何实例化做出决策。
参考者与协作者:Product是工厂方法所创建的对象类型的接口。Creator是定义工厂方法的接口。
效果:客户将需要派生Creator,以创建一个特定的ConcreteProduct对象。
实现:在抽象类中使用一个抽象方法(即C++的纯虚函数)。需要实例化一个被包含对象的时候抽象类的代码将引用此方法,但是不知道需要的对象是哪一个。
结构图:
摘自《设计模式解析(第2版)》(第23章)
Tags: 设计模式