(转)设计模式(Design Patterns)笔记之一:Abstract Factory yakuu [原作]

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

前言:呵呵,拿了第一页出来,还没反应过来,就被兄弟们惨骂一顿,前面实在象目录,^_^, 不过大家别急嘛,好歹给我点休息时间。

不多说,下面开始记笔记!^_^

设计模式(Design Patterns)笔记之一:Abstract Factory

定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。提供创建对象的接。

工厂模式是我们最常用的模式,是用来创建对象的,它就相当于创建对象的new。

例如我们有一个类Example,我们要创建Example的对象:

Example example=new Example();

Example example=new Example(参数);

如果创建Example时做的事情不是如赋值这样简单的事,可能是很长一段代码,如果也写入构造函数中,那明显的就违背了面向对象的原则.

我们需要将创建实例的责任与使用实例的责任分开, 使得

Example example=new Example(参数);

就是简单的责任:使用Example这个实例;而创建Example的任务就交给了Factory工厂模式.

按照传统方法,我们如果需要继承Example类,生成MyExample,就需要定义Example为Interface,然后,不断继承这个Interface,生成许多子类,造成以后代码维护是如此的困难。

如果,我们开始就采用了工厂模式,也许就没有这么多的烦恼了。

我们生成一个Factory,它专门负责生成Example的实例。

public class Factory {

public static Example getIntance() {

......

if(flag == 1)

return new MyExample();

if(flag == 2)

return new YourExample();

}

}

然后,那么在你的程序中,如果要实例化MyExample时.就使用

Example example=Factory.getIntance();//还有其它标志,不具体写了。

具体使用:

工厂模式有以下三种:

1. 简单工厂(Simple Factory)

2. 工厂方法(Factory Method);

3. 抽象工厂(Abstract Factory)。

我们先看一段代码

public abstract class Factory{

public abstract MyExample creator();

public abstract YourExample creator();

}

public class FirstFactory extends Factory{

public MyExample creator(){

......

}

public YourExample creator(){

......

}

}

public class SecondFactory extends Factory{

public MyExample creator(){

......

}

public YourExample creator(){

......

}

}

这里,我们需要创建多个对象,复杂性提高,于是需要采用Abstract Factory来封装共同属性和方法,而将不同的属性和方法通过子类来实现。

简而言之,工厂模式的目的就是用来实现实例分发。

工厂模式中几种类型的一些差别:

简单工厂模式是根据参数来决定产生实例;

简单工厂模式, 核心是一个实类;

工厂方法模式的核心是一个抽象工厂类;

工厂方法模式可以允许很多实的工厂类从抽象工厂类继承下来, 从而可以在实际上成为多个简单工厂模式的综合;

工厂方法一般只创建一个实例,而Abstract Factory创建多个实例。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航