工厂方法模式只是针对一种产品,虽有多个具体产品,但只有一个抽象产品类;而抽象工厂模式针对多个产品,它有多个抽象产品类,并且每个产品类有多个具体子类产品;抽象工厂模式能够灵活的实现"整套产品"的动态切换。
产品类:
public interface Phone {}
public interface Vehicle {}
//每个抽象产品有两个具体产品子类
public class BMW implements Vehicle{} //宝马
public class QQ implements Vehicle{} //奇瑞
public class IPhone implements Phone{} //iPhone
public class XiaoMi implements Phone{} //小米
工厂类:
public interface AbstractFactory {
Vehicle createVehicle();
Phone createPhone();
}
public class ChinaFactory implements AbstractFactory {
public Vehicle createVehicle() {
return new QQ();
}
public Phone createPhone() {
return new XiaoMi();
}
}
public class ForeignFactory implements AbstractFactory {
public Vehicle createVehicle() {
return new BMW();
}
public Phone createPhone() {
return new IPhone();
}
}
使用抽象工厂:
public class Main {
public static void main(String[] args) {
AbstractFactory f = new ChinaFactory();
Vehicle v = f.createVehicle();
Phone p = f.createPhone();
System.out.println(v + " " + p);
}
}
抽象工厂是针对产品族,也就是一套产品的,抽象工厂的具体子类工厂可根据需求生产出一套产品。上面我们动态将 f 赋值为一个ChinaFactory对象,则可从该工厂中取得“奇瑞”交通工具、“小米”手机,如果将 f 赋值为ForeignFatory对象,则可从该工厂中取得“宝马”交通工具、“iPhone”手机,而这种切换可以是动态的。
抽象工厂模式的关键在于:多个抽象产品类(多种产品)、每个抽象产品类派生出多个具体产品、一个抽象工厂生产多个抽象产品、抽象工厂派生多个具体工厂、每个具体工厂根据需求生产一套产品。
分享到:
相关推荐
### 抽象工厂模式(Abstract Factory Pattern) #### 引入 在探讨抽象工厂模式之前,我们先回顾一下之前介绍过的...在需要创建一组相关联对象且这些对象具有一定的共通性时,抽象工厂模式是一种非常实用的设计模式。
设计模式(Design pattern)是一套被反复使用、...本章系Java之美[从菜鸟到高手演变]系列之设计模式,我们会以理论与实践相结合的方式来进行本章的学习,希望广大程序爱好者,学好设计模式,做一个优秀的软件工程师!
深入浅出设计模式 pdf 深入浅出设计模式 中文版 设计模式 下载说明: 因个人上传资源大小只能是20M,而该书的PDF格式过大,所以只能分开上传。如有不便请谅解。【该书一共13章,在上传的时候我尽量按章节顺序打包...
### 白话说电气_相电压和线电压的分析 #### 一、相电压与线电压的概念 在我国,普遍采用的是三相四线制供电系统。在这个系统中,三根相线(A、B、C相)与一根地线(零线)构成了整个供电网络。在三相四线制中,相...
这类模式主要关注对象的创建过程,包括单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。它们提供了一种方式来封装对象的创建过程,使得代码更加灵活,易于管理和扩展。 2. 结构型模式: 结构型模式...
综上所述,电机制动是工业自动化中不可或缺的技术之一。文档《白话说电气_电机制动的几种常见方式.pdf》应该就是围绕这些基本知识点和实际应用进行了详细讲解。虽然由于OCR扫描技术的限制,文档中的一些文字无法完整...
在软件设计中,设计模式是一种解决常见问题的模板,它们是经过验证的、高效的设计解决方案。本文将聚焦于创建型设计模式,特别是单例模式和原型模式,这两种模式在对象的创建方面扮演着重要的角色。 单例模式是一种...
策略模式是设计模式中的一种 객체行为型模式,它定义了一系列算法,封装每一个算法,并使它们可以互相替换。策略模式使得算法可以独立于使用它的客户而变化。 概述 在软件开发中,经常遇到类似的情况,实现某一个...
为了更系统的学习设计模式,特地开了这样一个基于Java的设计模式【集中营】,都是笔者在实际工作中用到过或者学习过的一些设计模式的一些提炼或者总检。慢慢地初见规模,也有几个朋友给我点鼓励,给了star。本文工程...
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...
java课程设计作业——模仿大富翁游戏,使用Java Swing (GUI) 实现的单机游戏,遵循MVC设计模式 A Java Swing (GUI) game. 单机版的大富翁游戏,纯Java实现,采用MVC设计模式。 所有素材来自 大富翁客户端+冒险岛...
3. 抽象工厂模式:在处理多种相关或相互依赖的对象时,抽象工厂模式可以创建一系列相关的对象实例,而不必指定它们的具体类。 4. 建造者模式:在深度学习模型构建过程中,特别是当模型结构复杂时,建造者模式能将...
Winform使用技巧,实战应用开发小系统参考资料,源码参考。经测试可运行。 详细介绍了一些Winform框架的各种功能和模块,以及如何使用Winform进行GUI开发、网络编程和跨平台应用开发等。 适用于初学者和有经验的...
作者Eric Freeman 和Elisabeth Freeman,使用白话文的形式在讨论中介绍23中设计模式,有异与原《设计模式》更加通俗易懂。通过实际事例来讲解每一个设计模式,生动有趣,不会感觉到枯燥。
作者Eric Freeman 和Elisabeth Freeman,使用白话文的形式在讨论中介绍23中设计模式,有异与原《设计模式》更加通俗易懂。通过实际事例来讲解每一个设计模式,生动有趣,不会感觉到枯燥。
白话中台战略-中台是个什么鬼.pdf白话中台战略-中台是个什么鬼.pdf白话中台战略-中台是个什么鬼.pdf白话中台战略-中台是个什么鬼.pdf白话中台战略-中台是个什么鬼.pdf白话中台战略-中台是个什么鬼.pdf白话中台战略-...
这本书作者Eric Freeman 和Elisabeth Freeman使用白话文的方式,清楚的介绍了全部23种设计模式。简洁易懂。共13章节。此为封面、目录
作者Eric Freeman 和Elisabeth Freeman,使用白话文的形式在讨论中介绍23中设计模式,有异与原《设计模式》更加通俗易懂。通过实际事例来讲解每一个设计模式,生动有趣,不会感觉到枯燥。