在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。这时可以考虑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.运行结果:
这是液晶显示器的输出!
这是液晶显示器的驱动!
这是纯平显示器的输出!
这是纯平显示器的驱动!
分享到:
相关推荐
抽象工厂模式(Abstract Factory)是一种创建型设计模式,用于提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。这种模式的关键在于,它允许客户端代码与具体的实现细节解耦,使得添加新的产品...
Abstract Factory模式的核心在于抽象工厂(Abstract Factory)和具体工厂(Concrete Factory)。抽象工厂定义了一个用于创建一系列相关或相互依赖对象的接口,而具体工厂则实现了这些接口,负责生产实际的对象。这种...
第二章至第五章,作者们详细讲解了五种创建型设计模式:单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这五种模式都...
抽象工厂模式是GoF(Gamma、Helm、Johnson 和 Vlissides)所提出的23种设计模式之一,主要用于提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。本文将通过一个简单的Java程序示例——“热带...
- **Abstract Factory(抽象工厂模式)**:提供了一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。这种模式通常用于创建一组相关的对象,每个对象都属于不同的类,但遵循相同的主题或风格。...
- **抽象工厂**(Abstract Factory):声明了一组用于创建一系列相关或相互依赖的对象的接口。 - **具体工厂**(Concrete Factory):实现了抽象工厂接口,负责创建某个产品族中的产品对象。 - **抽象产品**...
3. **抽象工厂模式 (Abstract Factory)**:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。 4. **建造者模式 (Builder)**:将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建...
抽象工厂模式是软件设计中一种创建型设计模式,它提供了一个接口用于创建一系列相关或相互依赖的对象,而不需要指定这些对象的具体类。这种模式特别适用于当我们想要提供一个一致的接口给客户,但又不想让客户依赖于...
- **缺点**:难以支持新类型的抽象工厂。 - **1.3 Singleton模式**:确保一个类只有一个实例,并提供一个全局访问点。 - **应用场景**:控制对资源的访问,如数据库连接池、线程池等。 - **优点**:全局只有一个...
1. 创建型模式:工厂方法(Factory Method)、抽象工厂(Abstract Factory)、单例(Singleton)、建造者(Builder)和原型(Prototype)。它们主要关注对象的创建过程,降低了类与实例化之间的耦合度,使得系统更...
- 抽象工厂模式(Abstract Factory):提供一个接口,用于创建相关或依赖对象的家族,而无需指定它们的具体类。 - 建造者模式(Builder):将复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示...
- 抽象工厂(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,无需关心具体实现。 - 建造者(Builder):将复杂对象的构建与表示分离,使得相同构建过程可以创建不同表现。 - 工厂方法...
- 抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,无需指定它们的具体类。 - 构建者模式(Builder):将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 ...
创建型模式关注于对象的创建,如单例模式(Singleton)、工厂模式(Factory Method)、抽象工厂模式(Abstract Factory)等,它们提供了创建对象的不同方式,使得系统在不指定具体类的情况下能够创建对象。...
抽象工厂模式(Abstact Factory)是一种常见的软件设计模式。该模式为一个产品族提供了统一的创建接口。当需要这个产品族的某一系列的时候,可以为此系列的产品族创建一个具体的工厂类。 一、意图 抽象工厂模式提供...
- **抽象工厂模式**(Abstract Factory):提供一个接口,用于创建相关或依赖对象的家族,而无需指定具体类。 - **建造者模式**(Builder):将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的...
3. 抽象工厂模式(Abstract Factory):同样是GoF设计模式之一,它提供一个接口用于创建相关或依赖对象的家族,而不需要明确指定具体类。抽象工厂模式用于创建一组相关或相互依赖的对象。 简单工厂模式由以下三个...
- 抽象工厂模式(Abstract Factory):提供一个接口,用于创建相关或依赖对象的家族,而无需指定具体类。 - 建造者模式(Builder):将复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 2....
1. 创建型模式:这类模式涉及到对象的创建,如单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。它们提供了一种在不指定...