工厂模式

来源:互联网 发布:淘宝卖家插件推荐 编辑:程序博客网 时间:2024/06/04 23:35

部分参考:
http://blog.csdn.net/jason0539/article/details/23020989

在面向对象编程时,总是通过new来创建一个对象实例。但有时,new对象也会存在一些问题。比如, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一个 “过程”,不仅是一个操作,像一部大机器中的一个齿轮传动。

模式的问题:你如何能轻松方便地构造对象实例,而不必关心构造对象实例的细节和复杂过程呢?
所以说,工厂模式可以使用在任何生成复杂对象的地方。
1.在编码时不能预见需要创建哪种类的实例。
2.系统不应依赖于产品类实例如何被创建、组合和表达的细节

分类

工厂模式主要是为创建对象提供过渡的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。每次实例化这些类的时候不需要new多次,只需要调用工厂类的对应方法即可实例化这些类。
工厂模式分为三种:
简单工厂模式、工厂方法模式,抽象工厂模式。
三种模式从上到下逐步抽象,更具一般性。还有一种就是将简单抽象模式看作工厂方法模式的一种特例。

简单工厂模式(Simple Factory)

简单工厂模式,又称为静态工厂方法模式,由三种角色组成:
工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,根据逻辑不通,产生具体的工厂产品。工厂类是根据提供给它的参数,返回的几个可能产品中的 一个类的实例。
抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。
具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。

举个例子:

工厂方法模式(Factory Method)

抽象工厂模式(Abstract Factory)

原创粉丝点击