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

转载 2004年06月27日 20:00:00
http://dev.csdn.net/develop/article/14/14390.shtm

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

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

设计模式(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创建多个实例。

java设计模式大全 Design pattern samples in Java(最经典最全的资料)

Design pattern samples in Java.Build status:IntroductionDesign patterns are formalized best practice...
  • changemyself
  • changemyself
  • 2015年06月19日 13:10
  • 9749

设计模式(Design Patterns)

设计模式(Design Patterns)                                   ——可复用面向对象软件的基础 设计模式(Design pattern)是一套...
  • linlzk
  • linlzk
  • 2014年09月02日 11:09
  • 1990

【java设计模式】之 抽象工厂(Abstract Factory)模式

1. 女娲的失误         上一节学习了工厂模式,女娲运用了该模式成功创建了三个人种,可是问题来了,她发现没有性别……这失误也忒大了点吧……竟然没有性别,那岂不是……无奈,只好抹掉重来了,于是所...
  • eson_15
  • eson_15
  • 2016年04月26日 23:49
  • 11264

设计模式(Design Patterns)-可复用面向对象软件的基础 02:工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory)

工厂方法模式有三种: 1、普通工厂模式 就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。 首先,创建一个接口(Sender): public interface Sender{ publ...
  • Dove_Knowledge
  • Dove_Knowledge
  • 2017年05月24日 11:10
  • 477

设计模式(Design Patterns)-可复用面向对象软件的基础 01:简介(Abstract)

一、概述 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问...
  • Dove_Knowledge
  • Dove_Knowledge
  • 2017年05月24日 10:41
  • 369

Design Patterns - Abstract Factory - Example 1

#include #include using namespace std; // interface AbstractProductA class AbstractProductA { ...
  • wxqee
  • wxqee
  • 2012年06月07日 18:44
  • 433

Java Design Patterns Abstract Factory

Abstract Factory OverviewAn abstract factory has sets of methods to make families of various objects...
  • ccssddnnbbookkee
  • ccssddnnbbookkee
  • 2015年05月26日 12:44
  • 363

Java基础学习总结(37)——Java23中设计模式(Design Patterns)详解

设计模式(Design Patterns)                                   ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使...
  • u012562943
  • u012562943
  • 2015年12月19日 13:19
  • 1788

设计模式(Design Patterns)

转载此http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html/ 设计模式(Design pattern)是一套被反复使用...
  • qq_15950325
  • qq_15950325
  • 2016年10月08日 07:08
  • 2129

设计模式(Design Patterns)

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于...
  • houbin0912
  • houbin0912
  • 2016年10月08日 16:34
  • 309
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式(Design Patterns)笔记之一:Abstract Factory
举报原因:
原因补充:

(最多只允许输入30个字)