`
isiqi
  • 浏览: 16081044 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java设计模式3:abstract factory

阅读更多

抽象工厂模式是所有形态的工厂模式中最为抽象和最具有一般性的一种形态。抽象工厂模式的简略类图如下图所示:

~RXA~PNGLSFSZHQETS5]HST

抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,创建多个产品族中的产品对象。这就是抽象工厂模式的用意.

抽象工厂模式与工厂方法模式的最大区别就在于,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则需要面对多个产品等级结构。

采用抽象工厂模式设计出的系统类图如下图所示:

image

抽象工厂(AbstractFactory)角色:担任这个角色的是工厂方法模式的核心,它是与应用系统的商业逻辑无关的。通常使用Java接口或者抽象Java类实现,而所有的具体工厂类必须实现这个Java接口或继承这个抽象Java类。
具体工厂类(Concrete Factory)角色:这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择合适的产品对象的逻辑,而这个逻辑是与应用系统的商业逻辑紧密相关的。通常使用具体Java类实现这个角色。
抽象产品(Abstract Product)角色:担任这个角色的类是工厂方法模式所创建的对象的父类,或它们共同拥有的接口。
具体产品(Concrete Product)角色:抽象工厂模式创建的任何产品对象都是某一个具体产品类的实例。这是客户端最终需要的东西,其内部一定充满了应用系统的商业逻辑。

package com.javapatterns.abstractfactory;

public interface Creator
{
public ProductA factoryA();

public ProductB factoryB();
}

package com.javapatterns.abstractfactory;

public class ConcreteCreator1 implements Creator
{
public ProductA factoryA()
{
return new ProductA1();
}

public ProductB factoryB()
{
return new ProductB1();
}
}

package com.javapatterns.abstractfactory;

public class ConcreteCreator2 implements Creator
{
public ProductA factoryA()
{
return new ProductA2();
}

public ProductB factoryB()
{
return new ProductB2();
}
}

package com.javapatterns.abstractfactory;

public interface ProductA
{
}

package com.javapatterns.abstractfactory;

public class ProductA1 implements ProductA
{
public ProductA1()
{
System.out.println(this.getClass().toString());
}
}

package com.javapatterns.abstractfactory;

public class ProductA2 implements ProductA
{
public ProductA2()
{
System.out.println(this.getClass().toString());
}
}

package com.javapatterns.abstractfactory;

public interface ProductB
{
}

package com.javapatterns.abstractfactory;

public class ProductB1 implements ProductB
{
public ProductB1()
{
System.out.println(this.getClass().toString());
}
}

package com.javapatterns.abstractfactory;

public class ProductB2 implements ProductB
{
public ProductB2()
{
System.out.println(this.getClass().toString());
}
}

/**
*
*/
package com.javapatterns.abstractfactory;

import com.javapatterns.abstractfactory.*;

/**
* @author luhx
*
*/
public class abstractfactory_test {

public static Creator myCreator_s[];
public static void main(String[] args)
{
myCreator_s = new Creator[2];
myCreator_s[0] = new ConcreteCreator1();
myCreator_s[1] = new ConcreteCreator2();
for(int i = 0; i < myCreator_s.length; i++){
myCreator_s[i].factoryA();
myCreator_s[i].factoryB();
}
}
}

分享到:
评论

相关推荐

    Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)

    Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)

    Java设计模式之工厂模式(Factory)

    3. 抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步抽象,并且更具一般性。还有一种分类法,就是将简单工厂模式看为工厂方法模式的一种特例,两个归为一类。下面是使用工厂模式的两种情况: 1. 在编码时不...

    软件开发中的23种设计模式

    3)、抽象工厂型:Abstract Factory 4)、原型:Prototype 5)、建造型:Builder 2、结构型模式:类与类之间的调用 1)、适配器:Adapter 2)、桥接模式:Bridge 3)、门面模式:Facade 4)、装饰模式:Decorator 3...

    33种JAVA设计模式DEMO

    这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 工厂模式(Factory Pattern) 抽象工厂模式...

    [Java设计模式(第2版)(Design.Patterns.in.Java).John.Metsker

    《java设计模式(第2版)》通过一个完整的java项目对经典著作design patterns一书介绍的23种设计模式进行了深入分析与讲解,实践性强,却又不失对模式本质的探讨。本书创造性地将这些模式分为5大类别,以充分展现各个...

    java设计模式期末考试选择题100道

    适合Java设计模式期末考试选择题复习,形式如下: 10.(单选题)Facade(外观)模式的意图是 正确答案: A A.希望简化现有系统的使用方法,你需要定义自己的接口 B.将一个无法控制的现有对象与一个特定借口相匹配。 C....

    JAVA 设计模式PPT

    首先介绍了Java中面向对象特性和技术,逐个分析Abstract Factory;Builder;Prototype;Singleton;Adapter (对象);Bridge;Composite;Decorator;Facade;Flyweight;Proxy;Iterator;Observer等模式

    用Java实现23种设计模式

    用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...

    java设计模式教程+源代码

    AbstractFactory ( 抽象工厂 ) FactoryMethod ( 工厂方法 ) Singleton ( 单态模式 ) Builder ( 建造者模式 ) Prototype ( 原型模式 ) Adapter ( 适配器模式 ) Bridge ( 桥接模式 ) Composite ( 组合模式 ) ...

    AbstractFactory.zip

    这是java抽象工厂模式(AbstractFactory),使用简单的代码配合博客可以更清楚的了解设计模式。

    java设计模式

    java设计模式设计模式主要分三个类型:创建型、结构型和行为型。 其中创建型有: 一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点 二、Abstract Factory,抽象工厂:提供一个...

    Java面试 java设计模式整理 单例、工厂、策略等 面试使用,学习使用

    java的设计模式大体上分为三大类: 2 设计模式遵循的原则有6个: 2 1. 工厂模式(Factory Method) 2 2. 抽象工厂模式(Abstract Factory) 3 3. 单例模式(Singleton) 4 4.建造者模式(Builder) 4 5. 原型模式...

    abstract-factory-pattern

    对设计模式感兴趣的人:如果您对设计模式感兴趣,想要深入了解Java中的设计模式,那么本文将是您不可多得的好帮手。 软件工程师和架构师:作为软件工程师和架构师,掌握抽象工厂模式有助于您更好地设计系统架构,...

    JAVA23种设计模式代码学习.zip

    获取到【文件夹】名称: abstract_factory_pattern 获取到【文件夹】名称: adapter_pattern 获取到【文件夹】名称: bridge_pattern 获取到【文件夹】名称: build_pattern 获取到【文件夹】名称: chain_of_...

    HeadFirst 设计模式java源代码

    《Head First设计模式》(中文版)共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。前言先介绍这本书的用法;第1章到第 11章陆续介绍的设计 5b4 式为Strategy、Observer、Decorator、...

    Java 23种设计模式全归纳

    ### Java 23种设计模式全归纳 #### 资源概述 本资源包汇总了Java中23种经典设计模式的详细介绍和使用示例,旨在帮助开发者系统性地学习和掌握设计模式在软件开发中的应用。这些设计模式分为三大类:创建型模式、...

    设计模式_创建类_5种模式Java的实际例子_注释详细

    设计模式_创建类_5种模式Java的实际例子_注释详细 包括 1、单例模式(Singleton) 2、工厂方法(Factory Method) 3、抽象工厂(Abstract Factory) 4、建造模式(Builder) 5、原型模式(Prototype)

    设计模式——JAVA.docx

    JAVA设计模式总结之23种设计模式 一:设计模式之六大原则 总原则:开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。 1.Abstract Factory(抽象工厂模式) 2.Adapter(适配器模式)......

    Java设计模式,并加上个人理解

    1. 设计模式 1.1 含义 1.2 作用 1.3 设计原则 1.4 分类 2. 简单工厂模式 (SimpleFactoryPattern) 3. 工厂方法模式 (Factory Method) 4. 单例模式 (Singleton) 5. 抽象工厂模式 (Abstract Factory) 6. ...

    Head First 设计模式 JAVA源码

    第1章到第11章陆续介绍的设计模式为Strategy、Observer、Decorator、AbstractFactory、FactoryMethod、Singleton,Command、Adapter、Facade、TemplateMethod、Iterator、Composite、State、Proxy。最后三章比较特别...

Global site tag (gtag.js) - Google Analytics