15、抽象工厂模式

抽象工厂模式

 

1、定义

多个抽象产品类,派生出多个具体产品类;一个抽象工厂类,派生出多个具体工厂类;每个具体工厂类可创建多个具体产品类的实例。

 

2、结构图


  • 产品类接口:ProductA、ProductB定义两个产品接口
  • 产品实现:ProductA1、ProductA2、ProductB1、ProductB2
  • 抽象工厂接口:AbstractFactory
  • 工厂实现:ConcreteFactory1,ConcreteFactory2

3、代码

(1)产品A接口

public interface ProductA {

}

 

(2)产品B接口‘

public interface ProductB {

}

 (3)产品A1实现

public class ProductA1 implements ProductA {

}

 

(4)产品A2实现

public class ProductA2 implements ProductA {

}

 

(5)产品B1实现

public class ProductB1 implements ProductB {

}

 

(6)产品B2实现

public class ProductB2 implements ProductB {

}

 

(7)抽象工厂接口

public interface AbstractFactory {

	public ProductA createProductA();
	
	public ProductB createProductB();
}

 

(8)抽象工厂1实现

public class ConcreteFactory1 implements AbstractFactory{

	@Override
	public ProductA createProductA() {
		return new ProductA1();
	}

	@Override
	public ProductB createProductB() {
		return new ProductB1();
	}

}

 

(9)抽象工厂2实现

public class ConcreteFactory2 implements AbstractFactory {

	@Override
	public ProductA createProductA() {
		return new ProductA2();
	}

	@Override
	public ProductB createProductB() {
		return new ProductB2();
	}

}

 

 

 

4、总结

(1) 一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。

(2) 这个系统有多于一个的产品族,而系统只消费其中某一产品族。

(3) 同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。

(4) 系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值