安卓设计模式(八)工厂方法模式
工厂方法模式是创建性设计模式之一,一般用于复杂对象的创建 该系列其他文章: 下面以Androd经常用到的缓存Cache来举例说明: 缓存接口,定义所有缓存必须实现的方法 工厂方法根据需求又用几种不同的实现,不过思想是一致的,下面分别说明 1. 简单工厂(静态工厂) 如果我们程序中整体只需要一种缓存即可,不需要多种缓存,如磁盘缓存,所以只需要单一缓存子类及单一工厂即可: 2. 工厂与产品一对一,即每个工厂负责生产一种产品 3. 工厂与产品一对多,即每个工厂可以生产多种产品 工厂接口,定义所有工厂的必须实现的方法: 具体工厂,可根据需求生产不同的产品: 使用: 由以上可以的举例可以看到使用工厂方法创建对象简单明了,如果上面的缓存对象创建时需要设置很多参数,初始化数据等等,那么使用工厂方法模式相对于直接new一个实例有很大优势.工厂方法模式将对象的创建过程封装在工厂中,使得客户端无需再关心实例的创建和初始化过程. 实际开发中第三种使用的比较多,根据需求创建不同实例.
工厂模式如何应用
建议LZ把简单工厂,工厂方法和抽象工厂一起研究下,呵呵,前一段我老师让我研究下这3种模式的不同,一起学习可能更明白了。
简单工厂模式又称静态工厂方法模式。重命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。
先来看看它的组成:
1)工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。
2)抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。
3)具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。这样在简单工厂模式里集中在工厂方法上的压力可以由工厂方法模式里不同的工厂子类来分担。
看下它的组成:
1)抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。
2) 具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。
3)抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。
4)具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。