`

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.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics