JAVA设计模式是个什么玩意儿_02_抽象工厂模式
来源:互联网 发布:在淘宝上买东西有技巧 编辑:程序博客网 时间:2024/05/21 11:01
1. 定义
2. 思路
抽象工厂模式是工厂方法模式的进一步抽象,为创建一组相关或相互依赖的对象提供一个接口,无需指定它们的具体类。抽象工厂通常用于创一族产品,并且这组产品分不同的等级,不同的工厂生产不同等级的一族产品。
3. 代码
BMW.java
BMWX3.java
BMWX5.java
------------------------
Aircondition.java
GeliAircondition.java
HaierAircondition.java
-------------------------
BMWFactory.java
BMWX3Factory.java
BMWX5Factory.java
--------------------------
Client.java
public interface BMW {public void run();}
public class BMWX3 implements BMW {public void run() {System.out.println("宝马X3在奔跑……");}}
public class BMWX5 implements BMW {public void run() {System.out.println("宝马X5在奔跑……");}}
public interface Aircondition {public void air();}
public class GeliAircondition implements Aircondition {public void air() {System.out.println("格力空调正在吹风……");}}
public class HaierAircondition implements Aircondition {public void air() {System.out.println("海尔空调正在吹风……");}}
public interface BMWFactory {public BMW produceBMW();public Aircondition produceAircondition();}
public class BMWX3Factory implements BMWFactory {public BMW produceBMW() {return new BMWX3();}public Aircondition produceAircondition() {return new GeliAircondition();}}
public class BMWX5Factory implements BMWFactory {public BMW produceBMW() {return new BMWX5();}public Aircondition produceAircondition() {return new HaierAircondition();}}
public class Client {public static void main(String[] args) {BMWFactory bmwx3Factory = new BMWX3Factory();bmwx3Factory.produceBMW();bmwx3Factory.produceAircondition();BMWFactory bmwx5Factory = new BMWX5Factory();bmwx5Factory.produceBMW();bmwx5Factory.produceAircondition();}}
4. 优点和缺点
抽象工厂模式的优点
1)分离接口和实现
客户端使用抽象工厂来创建需要的对象,而客户端根本就不知道具体的实现是谁,客户端只是面向产品的接口编程而已。也就是说,客户端从具体的产品实现中解耦。
2)使切换产品族变得容易
因为一个具体的工厂实现代表的是一个产品族,从Intel系列到AMD系列只需要切换一下具体工厂。拿上面的代码来说,就是从BMWX3系列到BMWX5系列只需要切换一下具体的工厂即可。
抽象工厂模式的缺点
1)不太容易扩展新的产品
如果需要给整个产品族添加一个新的产品,那么就需要修改抽象工厂,这样就会导致修改所有的工厂实现类。 1 0
- JAVA设计模式是个什么玩意儿_02_抽象工厂模式
- JAVA设计模式是个什么玩意儿
- JAVA设计模式是个什么玩意儿_01_工厂方法模式
- JAVA设计模式是个什么玩意儿_05_原型模式
- JAVA设计模式是个什么玩意儿_00_工厂模式家族准备篇_简单工厂模式
- JAVA设计模式是个什么玩意儿_03_单例模式
- JAVA设计模式是个什么玩意儿_04_建造者模式
- java设计模式--抽象工厂
- Java设计模式-抽象工厂
- Java设计模式--抽象工厂
- java设计模式-抽象工厂
- Java设计模式-抽象工厂设计模式
- java设计模式之抽象工厂模式
- JAVA设计模式之抽象工厂模式
- Java设计模式_抽象工厂模式
- Java设计模式之抽象工厂模式
- 设计模式(JAVA)------抽象工厂模式
- java设计模式之抽象工厂模式
- CentOS7.2安装pyspider
- Linux应用总结(1):自动删除n天前日志
- 科创项目 基于视觉信息的门开关状态识别系统
- Java设计模式之享元模式
- 解决cmd中,javac提示:javac不是内部或外部命令,但是运行java、java-version正常的问题
- JAVA设计模式是个什么玩意儿_02_抽象工厂模式
- 第四届蓝桥杯A组--世纪末的星期
- EasyUI之手风琴Accordion
- 快速乘法&快速幂&矩阵快速幂简单讲解
- Mac OS 下PHP Mysql Nginx环境的搭建
- 关于日益泛滥的Android第三方框架
- MSTkruskal算法的理解
- NYOJ-20 吝啬的国度(DFS)
- Linux实现KVM+QEMU+libvirt的虚拟机环境 并使用virsh对虚拟机进行管理