JAVA设计模式是个什么玩意儿_02_抽象工厂模式
2016-10-26 00:22
441 查看
1. 定义
2. 思路
抽象工厂模式是工厂方法模式的进一步抽象,为创建一组相关或相互依赖的对象提供一个接口,无需指定它们的具体类。抽象工厂通常用于创一族产品,并且这组产品分不同的等级,不同的工厂生产不同等级的一族产品。3. 代码
BMW.javaBMWX3.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)不太容易扩展新的产品
如果需要给整个产品族添加一个新的产品,那么就需要修改抽象工厂,这样就会导致修改所有的工厂实现类。
相关文章推荐
- JAVA设计模式是个什么玩意儿_01_工厂方法模式
- JAVA设计模式(02):创建型-抽象工厂模式(Abstract Factory)
- JAVA设计模式是个什么玩意儿_00_工厂模式家族准备篇_简单工厂模式
- JAVA设计模式(02):创建型-抽象工厂模式(Abstract Factory)
- JAVA设计模式是个什么玩意儿
- JAVA设计模式是个什么玩意儿_03_单例模式
- JAVA设计模式是个什么玩意儿_04_建造者模式
- JAVA设计模式是个什么玩意儿_05_原型模式
- JAVA设计模式(02):创建型-抽象工厂模式(Abstract Factory)
- java设计模式---Abstract Facotry Pattern---抽象工厂模式
- java 设计模式 学习笔记(3) 抽象工厂模式
- Java与设计模式(03)--抽象工厂模式
- 浅谈 java 设计模式--抽象工厂模式(AbstractFactory pattern)
- java_面向对象_02_静态(代码块)_main_单例设计模式
- JAVA设计模式之抽象工厂模式
- Java:设计模式之抽象工厂模式(Abstract Factory)
- java设计模式——抽象工厂模式
- Java设计模式二:抽象工厂模式(Abstract Factory)/工厂方法(Factory Method)
- Java设计模式圣经连载(03)-抽象工厂模式
- Java:详细讲解 什么是设计模式?