首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

工场模式(Factory)

2012-08-10 
工厂模式(Factory)工厂模式是用来生成对象的。假如我们有一个Product类,如果要创建一个实例就new Product()

工厂模式(Factory)
工厂模式是用来生成对象的。假如我们有一个Product类,如果要创建一个实例就new Product();但是如果这个类有几个子类,创建子类对象new ProductA();new ProductB();这样需要每个子类都创建一个对象很是麻烦,而且还要修改以前的代码。这样我们可以把Product类抽象成一个接口。

class ProductA implements Product{//添加方法的实现}class ProductB implements Product{//添加方法的实现}Class Factory{public static Product create(String className){Return Class.forName(className).newInstance();}}

如果className为”com.jeedroid.ProductA”的话那么就返回了ProductA的实例。所以使用工厂模式需要定义一个接口,还有对该接口的实现,还要有一个Factory来生产实例。
如果我们还有一个Product2接口,那么我们产生Product2A和Product2B的话,又要写一个Factory来产生实例,那么我们能不能在一个Factory里面实现同时创建Product和Product2的实现的实例呢?这就用到了抽象工厂。
抽象工厂(Abstract Factory)和上面的工厂方法(Factory Method)的不同点就在于创建对象的复杂度。举个例子:
假如有两个电脑生产商LenovoFactory(工厂)和AcerFactory(工厂),每个工厂都有createPC(),createMouse()这两个方法用来生成PC和Mouse,,Abstract Factory为这个产品提供一个统一的创建接口来创建一系列的产品。
public abstract class Factory{public abstract PC create();Public abstract Mouse create2();}public class LenovoFactory extends Factory{public PC create(){Return new LenovoPC();}public Mouse create2(){return new LenovoMouse();}}public class AcerFactory extends Factory{public PC create(){Return new AcerPC();}public Mouse create2(){Return new AcerMouse();}}


就是将共同的部分(都生产鼠标、PC)封装的抽象类中,不同部分(生成Lenovo的PC和联想的Mouse,生成Acer的PC和Mouse)由子类实现。
下面有我写的详细的测试代码

热点排行