`
小牛犊
  • 浏览: 96936 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

GoF:Abstract Factory(抽象工厂模式)

阅读更多

在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。这时可以考虑Abstract Factory。

Abstract Factory的几个要点:

(1)如果没有应对“多系列对象构建”的需求变化,则没有必要使用Abstract Factory模式,这时候使用简单的静态工厂完全可以。

(2)“系列对象”指的是这些对象之间有相互依赖、或作用的关系。

(3)Abstract Factory模式主要在于应对“新系列”的需求变动。其缺点在于难以应对“新对象”的需求变动。

(4)Abstract Factory模式经常和Factory Method模式共同组合来应对“对象创建”的需求变化。

 

例子:

A.产品接口 

//屏幕
public interface IScreen {
	public void print();
}

 

//显示驱动
public interface IDisplayDriver {
	public void draw();
}

B.具体产品(有两套)

public class LCDScreen implements IScreen {
	@Override
	public void print() {
		System.out.println("这是液晶显示器的输出!");
	}
}

 

public class RusticScreen implements IScreen {
	@Override
	public void print() {
		System.out.println("这是纯平显示器的输出!");
	}
}

 

public class LCDDisplayDriver implements IDisplayDriver {
	@Override
	public void draw() {
		System.out.println("这是液晶显示器的驱动!");
	}
}

 

public class RusticDisplayDriver implements IDisplayDriver {
	@Override
	public void draw() {
		System.out.println("这是纯平显示器的驱动!");
	}
}

C.显示器工厂接口

//显示器工厂
public interface IDisplayFactory {
    public IScreen createScreen();
    public IDisplayDriver createDisplayDriver();
}

D.显示器工厂实现类

//液晶显示器工厂
public class LCDDisplayFactory implements IDisplayFactory {
	@Override
	public IDisplayDriver createDisplayDriver() {
		// TODO Auto-generated method stub
		return new LCDDisplayDriver();
	}
	@Override
	public IScreen createScreen() {
		// TODO Auto-generated method stub
		return new LCDScreen();
	}
}

 

//纯平显示器工厂
public class RusticDisplayFactory implements IDisplayFactory {
	@Override
	public IDisplayDriver createDisplayDriver() {
		// TODO Auto-generated method stub
		return new RusticDisplayDriver();
	}
	@Override
	public IScreen createScreen() {
		// TODO Auto-generated method stub
		return new RusticScreen();
	}
}

 

E.客户端

public class Client {
	private IDisplayFactory displayFactory;

	Client(IDisplayFactory displayFactory) {
		this.displayFactory = displayFactory;
	}
	public void print() {
		displayFactory.createScreen().print();
	}
	public void draw() {
		displayFactory.createDisplayDriver().draw();
	}
	public static void main(String[] args) {
		Client c = new Client(new LCDDisplayFactory());//使用液晶显示器
		c.print();
		c.draw();
		Client d = new Client(new RusticDisplayFactory());//使用纯平显示器
		d.print();
		d.draw();
	}
}

 F.运行结果:

这是液晶显示器的输出!
这是液晶显示器的驱动!
这是纯平显示器的输出!
这是纯平显示器的驱动!

 

分享到:
评论

相关推荐

    20051115pm--C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式)

    抽象工厂模式(Abstract Factory)是一种创建型设计模式,用于提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。这种模式的关键在于,它允许客户端代码与具体的实现细节解耦,使得添加新的产品...

    对设计模式—Abstract Factory模式的认识

    Abstract Factory模式的核心在于抽象工厂(Abstract Factory)和具体工厂(Concrete Factory)。抽象工厂定义了一个用于创建一系列相关或相互依赖对象的接口,而具体工厂则实现了这些接口,负责生产实际的对象。这种...

    GoF:设计模式--可复用面向对象软件的基础(1-5章)

    第二章至第五章,作者们详细讲解了五种创建型设计模式:单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这五种模式都...

    java抽象工厂模式实现热带工厂

    抽象工厂模式是GoF(Gamma、Helm、Johnson 和 Vlissides)所提出的23种设计模式之一,主要用于提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。本文将通过一个简单的Java程序示例——“热带...

    GOF设计模式C#加强版

    - **Abstract Factory(抽象工厂模式)**:提供了一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。这种模式通常用于创建一组相关的对象,每个对象都属于不同的类,但遵循相同的主题或风格。...

    抽象工厂模式

    - **抽象工厂**(Abstract Factory):声明了一组用于创建一系列相关或相互依赖的对象的接口。 - **具体工厂**(Concrete Factory):实现了抽象工厂接口,负责创建某个产品族中的产品对象。 - **抽象产品**...

    GOF 设计模式 中文 高清

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

    设计模式之抽象工厂模式(AbstractFactory)摘录

    抽象工厂模式是软件设计中一种创建型设计模式,它提供了一个接口用于创建一系列相关或相互依赖的对象,而不需要指定这些对象的具体类。这种模式特别适用于当我们想要提供一个一致的接口给客户,但又不想让客户依赖于...

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    - **缺点**:难以支持新类型的抽象工厂。 - **1.3 Singleton模式**:确保一个类只有一个实例,并提供一个全局访问点。 - **应用场景**:控制对资源的访问,如数据库连接池、线程池等。 - **优点**:全局只有一个...

    GOF.rar_GoF_visual c_设计模式代码

    1. 创建型模式:工厂方法(Factory Method)、抽象工厂(Abstract Factory)、单例(Singleton)、建造者(Builder)和原型(Prototype)。它们主要关注对象的创建过程,降低了类与实例化之间的耦合度,使得系统更...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

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

    java gof设计模式 详细介绍设计模式用法

    - 抽象工厂(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,无需关心具体实现。 - 建造者(Builder):将复杂对象的构建与表示分离,使得相同构建过程可以创建不同表现。 - 工厂方法...

    GOF之23种设计模式的C#实现:DesignPattern.zip

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

    中文版GOF设计模式

    创建型模式关注于对象的创建,如单例模式(Singleton)、工厂模式(Factory Method)、抽象工厂模式(Abstract Factory)等,它们提供了创建对象的不同方式,使得系统在不指定具体类的情况下能够创建对象。...

    学习php设计模式 php实现抽象工厂模式

    抽象工厂模式(Abstact Factory)是一种常见的软件设计模式。该模式为一个产品族提供了统一的创建接口。当需要这个产品族的某一系列的时候,可以为此系列的产品族创建一个具体的工厂类。 一、意图 抽象工厂模式提供...

    GOF23种设计模式源码

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

    深入浅出设计模式(中文版).pdf(深入浅出设计模式 作者:AI92 并非同名书籍)

    3. 抽象工厂模式(Abstract Factory):同样是GoF设计模式之一,它提供一个接口用于创建相关或依赖对象的家族,而不需要明确指定具体类。抽象工厂模式用于创建一组相关或相互依赖的对象。 简单工厂模式由以下三个...

    GOF 23种设计模式

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

    GOF设计模式双语版(设计模式经典之作)

    1. 创建型模式:这类模式涉及到对象的创建,如单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。它们提供了一种在不指定...

Global site tag (gtag.js) - Google Analytics