设计模式(9)——创建型模式之工厂方法
设计模式(9)——创建型模式之工厂方法
- 工厂方法
- 作用
- 结构
- 伪代码
- 适用场景
工厂方法
作用
工厂方法是一种创建型设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。
结构
- 产品(Product)将会对接口进行声明。对于所有由创建者及其子类构建的对象,这些接口都是通用的。
- 具体产品(Concrete Products)是产品接口的不同实现。
- 创建者(Creator)类声明返回产品对象的工厂方法。该方法的返回对象类型必须与产品接口相匹配。
- 具体创建者(Concrete Creators) 将会重写基础工厂方法,使其返回不同类型的产品。
可以在创建者(Creator)中声明抽象方法,由具体创建者(Concrete Creators)以不同的实现返回产品(Product)对象;也可以在创建者(Creator)中返回默认的产品(Product)对象。
伪代码
以下示例演示了如何使用工厂方法开发跨平台UI(用户界面)组件,并同时避免客户代码与具体 UI 类之间的耦合。基础对话框类使用不同的UI 组件渲染窗口。在不同的操作
系统下, 这些组件外观或许略有不同, 但其功能保持一致。Windows 系统中的按钮在 Linux 系统中仍然是按钮。
如果使用工厂方法,就不需要为每种操作系统重写对话框逻辑。如果我们声明了一个在基本对话框类中生成按钮的工厂方法,那么我们就可以创建一个对话框子类,并使其通过工
厂方法返回Windows 样式按钮。子类将继承对话框基础类的大部分代码,同时在屏幕上根据 Windows 样式渲染按钮。
// Button作为产品接口,将声明所有具体产品都必须实现的操作。