JAVA设计模式是个什么玩意儿_02_抽象工厂模式

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值