`

设计模式(3)-创建型-抽象工厂(Abstract Factory)(个人笔记)

 
阅读更多

概述:

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

    1.一个系统要独立于它的产品的创建、组合和表示时。

    2.一个系统要由多个产品系列中的一个来配置时。

    3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。

    4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。
参与者:

    1.AbstractFactory
      声明一个创建抽象产品对象的操作接口。

    2.ConcreteFactory
      实现创建具体产品对象的操作。

    3.AbstractProduct
      为一类产品对象声明一个接口。

    4.ConcreteProduct
      定义一个将被相应的具体工厂创建的产品对象。
      实现AbstractProduct接口。

    5.Client
      仅使用由AbstractFactory和AbstractProduct类声明的接口

示例:

package com.sql9.created;

// author : iihero

// abstract product
interface ITrainStair
{
void make();
}

interface ITrainBody
{
void make();
}

// concrete product
class NorthTrainStair implements ITrainStair
{
public void make()
{
System.out.println("生产椅子(北方样式)完成......");
}
}

class NorthTrainBody implements ITrainBody
{
public void make()
{
System.out.println("生产车身(北方样式)完成......");
}
}

class SouthTrainStair implements ITrainStair
{
public void make()
{
System.out.println("生产椅子(南方样式)完成......");
}
}

class SouthTrainBody implements ITrainBody
{
public void make()
{
System.out.println("生产车身(南方样式)完成......");
}
}

// abstract factory
interface ITrainFactory
{
ITrainStair createTrainChair();
ITrainBody createTrainBody();
}

//Concrete Factory
class NorthFactory implements ITrainFactory
{
public ITrainStair createTrainChair()
{
System.out.println("北车公司, 生产火车椅子零件(from North)...");
ITrainStair its = new NorthTrainStair();
return its;
}

public ITrainBody createTrainBody()
{
System.out.println("北车公司, 生产火车车身零件(from North)...");
ITrainBody itb = new NorthTrainBody();
return itb;
}
}

class SouthFactory implements ITrainFactory
{
public ITrainStair createTrainChair()
{
System.out.println("南车公司, 生产火车椅子零件(from South)...");
ITrainStair its = new SouthTrainStair();
return its;
}

public ITrainBody createTrainBody()
{
System.out.println("南车公司, 生产火车车身零件(from South)...");
ITrainBody itb = new SouthTrainBody();
return itb;
}
}

public class AbstractFactoryTest
{
public static void main(String[] args)
{
ITrainFactory itf = new NorthFactory();
itf.createTrainChair().make();
itf.createTrainBody().make();

itf = new SouthFactory();
itf.createTrainChair().make();
itf.createTrainBody().make();
}

}

执行结果:

北车公司, 生产火车椅子零件(from North)...
生产椅子(北方样式)完成......
北车公司, 生产火车车身零件(from North)...
生产车身(北方样式)完成......
南车公司, 生产火车椅子零件(from South)...
生产椅子(南方样式)完成......
南车公司, 生产火车车身零件(from South)...
生产车身(南方样式)完成......

总结:

当提供一类对象的创建,只想显示它们的接口而不是实现的时候,比较实用。

<script type="text/javascript"><!-- google_ad_client = "ca-pub-7104628658411459"; /* wide1 */ google_ad_slot = "8564482570"; google_ad_width = 728; google_ad_height = 90; //--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
分享到:
评论

相关推荐

    新版设计模式手册-笔记

    创建型模式主要关注对象的创建过程,例如单例模式(Singleton)、工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory)。单例模式确保一个类只有一个实例,并提供全局访问点;工厂方法模式则允许子类...

    java 抽象工厂设计模式 案例

    Java抽象工厂设计模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,一个工厂接口用于创建一系列相关的或相互依赖的对象,而无需指定它们的具体类。这种模式让代码与具体实现解耦,使得...

    23种设计模式之抽象工厂模式Java示例代码

    抽象工厂模式(Abstract Factory Pattern)是面向对象设计模式中的一个重要成员,属于创建型模式的一种。它提供了一种创建一系列相关或相互依赖对象的方式,且无需指定它们具体的类。通过抽象工厂模式,可以有效地...

    23个设计模式图解--学习笔记

    2. **抽象工厂**(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。 3. **建造者**(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同...

    设计模式复习笔记大全

    - **创建型模式**:如`AbstractFactory`模式,用于创建一系列相关的对象,而无需指定具体的类。 #### 六、Abstract Factory(抽象工厂)模式详解 - **意图**:提供一个创建一系列相关或相互依赖对象的接口,而无需...

    设计模式笔记(精版)

    1. 抽象工厂(Abstract Factory)模式:抽象工厂提供一个接口,用于创建一系列相关或相互依赖的对象,而无需知道具体实现的细节。这种模式在需要切换不同平台或环境时特别有用,因为它允许你在不修改客户端代码的...

    设计模式总结-java与模式清晰版

    创建型模式如单例(Singleton)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)等,关注对象的创建过程,使得代码更加灵活且易于维护。结构型模式如适配器(Adapter)、装饰器(Decorator)和代理...

    设计模式之美—学习笔记

    这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory Method)和抽象工厂模式(Abstract Factory)。单例模式确保一个类只有一个实例,并提供全局访问点,常用于配置中心或者线程池等。工厂...

    设计模式之蝉

    “抽象工厂模式”(Abstract Factory pattern)也被简要提及,它是另一个创建型设计模式,用于创建一系列相关或相互依赖的对象。抽象工厂模式与工厂模式的不同之处在于,它不仅仅关注单一产品的创建,而是关注产品...

    HeadFirst设计模式笔记

    创建型模式关注对象的创建,如单例模式(Singleton)、工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory)。结构型模式涉及如何组合类和对象,比如适配器模式(Adapter)、装饰器模式(Decorator)...

    台湾人写的设计模式笔记

    主要分为五种:工厂方法(Factory Method)、抽象工厂(Abstract Factory)、单例(Singleton)、建造者\Builder、原型\(Prototype\)。例如,工厂方法允许在子类中定义实例化对象的具体过程,而单例模式确保一个类只有一个...

    设计模式的读书总结笔记

    1. 创建型模式:如单例模式(Singleton)、工厂模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这些模式关注对象的创建,旨在降低对象的创建过程与使用...

    设计模式整理代码-pattern.zip

    - 抽象工厂模式(Abstract Factory):提供一个接口,用于创建相关或依赖对象的家族,而无需指定具体类。 - 建造者模式(Builder):将复杂对象的构建与表示分离,使得相同的构建过程可以创建不同的表示。 2. **...

    设计模式实验报告.pdf

    在本实验报告中,我们将探讨两种设计模式:工厂模式(Factory Pattern)和抽象工厂模式(Abstract Factory Pattern)。 工厂模式 工厂模式是一种创建型模式,它提供了一种创建对象的方式,而不需要指定具体的类别...

    设计模式笔记设计模式笔记

    - 创建型模式:如单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)和原型(Prototype)。它们主要关注对象的创建过程,使得代码更加灵活,易于扩展。 - 结构型...

    设计模式笔记总结 含C#示例代码 复习好帮手

    ### 设计模式笔记总结 本篇文章是对一份设计模式学习资料的深入解读,这份资料包含了19种经典的设计模式,并提供了C#示例代码,适用于学习和复习。下面将逐一介绍这些设计模式及其核心概念。 #### 1. 简单工厂模式...

    图解Java设计模式笔记总结word版本.rar

    - **创建型模式**:如单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)和原型(Prototype),它们主要关注对象的创建过程。 - **结构型模式**:如适配器...

    23种面向对象设计模式

    1. **创建型模式**(Creational Patterns):这类模式关注对象的创建过程,包括单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式...

    《设计模式:可复用面向对象软件的基础》学习并理解 23 种设计模式

    - **抽象工厂模式**(Abstract Factory):提供一个接口,用于创建相关或依赖对象的族,而无需指定它们具体的类。 - **建造者模式**(Builder):将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建...

    C#设计模式学习笔记

    创建型模式关注对象的创建,如单例模式(Singleton)、工厂模式(Factory)和抽象工厂模式(Abstract Factory),它们帮助我们在不指定具体类的情况下创建对象。结构型模式处理对象组合,比如适配器模式(Adapter)...

Global site tag (gtag.js) - Google Analytics