设计模式-抽象工厂模式(创建型模式)

抽象工厂模式

  提供一个创建一系列相关或相互依赖对象的接口,而无须指定他们具体的类。

结构图

  设计模式-抽象工厂模式(创建型模式)

优缺点

  优点:

   a.易于交换产品系列;在一个应用中只需要在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。

   b.具体的创建实例过程与客户端分离,客户端通过他们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户代码中。

   c.增加新的产品系列,不会更改其他系列的源码,符合开放闭合原则。

   缺点:

   a.增加新的产品系列时,就需要增加一系列的工厂及实现,增大开发成本。

   

 工厂方法模式和抽象工厂模式的区别

 工厂方法模式是对一个具体工厂的一个输出,指向一个工厂延迟到其子类生成一个具体的实例;

 抽象工厂针对的是一系列的工厂,针对解决的是全局结构性的问题,例如数据库。

 这里还拿之前我写的工厂方法模式的实例来进行说明:

 抽象工厂模式意味这在工厂方法模式之上,又增加了一层结构,也就是将工厂方法的一个产品增加至多个产品

下图是工厂方法模式的uml图:设计模式-抽象工厂模式(创建型模式)

这里只针对老人需要生活帮助一种产品,需要哪中帮助,就直接在其对应的工厂中生成对应的一种实例。

下图为抽象工厂uml图:其中增加了医疗帮助这一产品,这样就针对于老人的生活多出了一个系列。

设计模式-抽象工厂模式(创建型模式)

与工厂方法模式最显著的改变就是新增了一系列的产品-医疗服务-护士-医生-陪护-看病。

这样 在老人需要生活帮助的时候就选择生活这一系列产品,在需要医疗服务的时候就选择医疗这一系列产品。

无论选择那一项,到最后都是只能生成一种实例。