一、简介
1. 定义
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
2.特点
- 抽象工厂的方法输出的对象都是相关或相互依赖的
- 一般实现称为接口
- 通常结合工厂方法提供具体的实现
3.相关角色
- 抽象工厂:创建一系列相关或相互依赖对象的接口
- 具体工厂:提供抽象工厂接口具体实现
- 产品:抽象工厂的产出
- 客户端:使用抽象工厂的对象
4.何时使用?
- 只关心使用,而不关心实现时(面向接口)
- 可能需要动态的切换产品簇的时候
- 强调一系列相关产品,以便联合使用它们时
二、实例
首先定义一个CPU和主板的接口
/**
* CPU接口
*/
public interface CpuApi {
void caculate();
}
/**
* 主板接口
*/
public interface MainBoardApi {
void installCpu();
}
再定一个两个实现类
public class IntelCpu implements CpuApi {
/**
* 针脚
*/
private int pins;
public IntelCpu(int pins) {
this.pins = pins;
}
@Override
public void caculate() {
System.out.println("caculate us Intel,pins:"+pins);
}
}
public class MsiMainBoard implements MainBoardApi {
/**
* CPU插槽孔数
*/
private int cpuHoles;
public MsiMainBoard(int cpuHoles) {
this.cpuHoles = cpuHoles;
}
@Override
public void installCpu() {
System.out.println("Main board of MSI install CPU,CPU holes:" + cpuHoles);
}
}
定义一个抽象工厂
public interface AbstractFactory {
CpuApi createCpu();
MainBoardApi createMainBoard();
}
具体的实现的Lenovo工厂
public class LenovoFactory implements AbstractFactory {
@Override
public CpuApi createCpu() {
return new IntelCpu(1156);
}
@Override
public MainBoardApi createMainBoard() {
return new MsiMainBoard(1156);
}
}
最后使用
public class AbstractFactoryTest {
public static void main(String[] args) {
AbstractFactory factory = new LenovoFactory();
CpuApi cpu = factory.createCpu();
MainBoardApi mainBoard = factory.createMainBoard();
//
cpu.caculate();
mainBoard.installCpu();
}
}
分享到:
相关推荐
设计模式---抽象工厂模式(Abstract Factory)-UML图 (StarUML)
NULL 博文链接:https://zhouhaitao.iteye.com/blog/1003684
设计模式举例 抽象工厂模式 代码+用例图 设计模式, 设计模式举例-抽象工厂模式(有图有真相)
博客 走进设计模式之抽象工厂(Abstract Factory) 对应代码
设计模式C++学习之抽象工厂模式(AbstractFactory)
C#设计模式之抽象工厂(abstract factory)模式示例源代码
设计模式抽象工厂模式(AbstractFactory)源代码
抽象工厂模式用到了工厂方法模式来创建单一对象,AbstractFactory 中的 createProductA() 和 createProductB() 方法
要好好去读上面那个实例,虽然有点绕嘴,其实只要用心去读,分清了抽象工厂模式的各个角色,对理解设计模式是非常重要的。理解头绪,然后接合简单工厂模式、工厂方法模式对工厂家族的了解,再加上抽象工厂模式的意图...
Abstract Factory模式 1 定义创建对象的接口,并封装对象的创建 2 将具体化类的工作延迟到了类中 3 创建创建一组相关对象或者说是一组相互依赖的对象 一般情况下,我们为了提高内聚和松耦合,经常会使用多态来...
- 抽象工厂模式(Abstract Factory) - 单例模式(Singleton) - 建造者模式(Builder) - 原型模式(Prototype) - 代理模式(Proxy) - 适配器模式(Adapter) - 装饰器模式(Decorator) - 桥接模式(Bridge) - 组合...
抽象工厂模式可以实现不同数据库之间的无缝移植。 该项目是在三层架构的基础上改进的。希望对初学者有帮助。
c#设计模式 工厂模式 抽象工厂(Abstract Factory)模式 引进抽象工厂模式
还是一个很简单的例子 博文链接:https://schnauzer.iteye.com/blog/111891
第17章 抽象工厂(abstract factory)模式 148 第18章 原型(prototype)模式 158 第19章 备忘录(memento)模式 163 第20章 操作型模式介绍 176 第21章 模板方法(template method)模式 182 第22章 状态(state)模式 193 第...
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责...
C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式)
3. 抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步抽象,并且更具一般性。还有一种分类法,就是将简单工厂模式看为工厂方法模式的一种特例,两个归为一类。下面是使用工厂模式的两种情况: 1. 在编码时不...
使用startuml 实现abstract factory 图,并使用C++实现。
C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式) (Level 300)