`
angela621
  • 浏览: 3329 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

抽象工厂模式

阅读更多

抽象工厂模式(Abstract Factory)

 

类图

抽象工厂模式的一般结构,如图所示:

 
 

角色

抽象工厂角色:这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。

具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。在java中它由具体的类来实现。

抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般由抽象类或者接口来实现。

具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。

 

实例

 
 
 

缺点

产品族扩展比较困难,但是一定要清楚是产品族扩展困难,而不是产品等级,在该模式下,产品等级是非常容易扩展的,增加一个产品等级,只要增加一个工厂类负责新增加出来的产品生产任务即可,也就是说横向扩展容易,纵向扩展困难。

 

区别

工厂方法模式:

一个抽象产品类,可以派生出多个具体产品类。  

一个抽象工厂类,可以派生出多个具体工厂类。  

每个具体工厂类只能创建一个具体产品类的实例。

 

抽象工厂模式:

多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。  

一个抽象工厂类,可以派生出多个具体工厂类。  

每个具体工厂类可以创建多个具体产品类的实例。  

   

区别:

工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。  

工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

  • 大小: 8 KB
  • 大小: 10.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics