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
原创粉丝点击