设计模式学习——Factory Method(工厂方法)

意图:定义一个用于创建对象的接口,让子类决定实现化哪一个类。将实例化推迟到子类。

问题:一个类需要实例化另一个类的派生类,但不知道是哪一个。Factory Method允许派生类进行决策。

解决方案:派生类对实例化哪个类和如何实例化做出决策。

参考者与协作者:Product是工厂方法所创建的对象类型的接口。Creator是定义工厂方法的接口。

效果:客户将需要派生Creator,以创建一个特定的ConcreteProduct对象。

实现:在抽象类中使用一个抽象方法(即C++的纯虚函数)。需要实例化一个被包含对象的时候抽象类的代码将引用此方法,但是不知道需要的对象是哪一个。

结构图:

摘自《设计模式解析(第2版)》(第23章)

Tags:

Leave a Reply