Java设计模式--抽象工厂模式

抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品具体类型的情况下,创建多个产品族中的产品对象。这就是抽象工厂模式的用意。
每个模式都是针对一定问题的解决方案。抽象工厂模式面对的问题是多产品等级结构的系统设计。
在学习抽象工厂具体实例之前,应该明白两个重要的概念:产品族和产品等级。

产品族:是指位于不同产品等级结构中,功能相关联的产品组成的家族。比如AMD的CPU和ADM芯片的主板,组成一个家族。Intel的CPU和Intel芯片的主板,又组成一个家族。而这两个家族都来自于两个产品等级:CPU,主板。一个等级结构是由相同的结构的产品组成,示意图如下:

下面以一个代码来说明抽象工厂模式:

1.抽象工厂:

package abstractfactory;

public interface AbstractFactory {
	public Engine createEngine();
	public Aircondition createAircondition();
}
2.具体工厂

package abstractfactory;

public class FactoryA implements AbstractFactory {
	public Engine createEngine() {
		// TODO Auto-generated method stub
		return new EngineA();
	}

	public Aircondition createAircondition() {
		// TODO Auto-generated method stub
		return new AirconditionA();
	}
}

public class FactoryB implements AbstractFactory{


	public Engine createEngine() {
		// TODO Auto-generated method stub
		return new EngineB();
	}

	public Aircondition createAircondition() {
		// TODO Auto-generated method stub
		return new AirconditionB();
	}

}

3.抽象产品

package abstractfactory;

public interface Engine {
	
}

public interface Aircondition {

}

4.具体产品

package abstractfactory;

public class EngineA implements Engine {
	public EngineA(){
		System.out.println("生产-->EngineA");
	}
}

public class EngineB implements Engine {
	public EngineB(){
		System.out.println("生产-->EngineB");
	}
}

public class AirconditionA implements Aircondition {
	public AirconditionA(){
		System.out.println("生产-->AriconditonA");
	}
}

public class AirconditionB implements Aircondition{
	public AirconditionB(){
		System.out.println("生产-->AirconditionB");
	}
}

5.测试类

package abstractfactory;

public class Test {
	public static void main(String[] args) {
		Engine e  = new FactoryA().createEngine();
		Aircondition a = new FactoryA().createAircondition();
		Engine e1 = new FactoryB().createEngine();
		Aircondition a1 = new FactoryB().createAircondition();
	}
}

6.测试结果:

生产-->EngineA
生产-->AriconditonA
生产-->EngineB
生产-->AirconditionB

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值