天天看点

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

设计模式总览

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

优点:

提供了很好的封装性!对于客户来说,完全不用关心每个产品的具体类,只需要知道产品的抽象接口!这也正是面向接口编程!

支持系列拓展!从图中可以看出,现在有两个系列,系列1,和系列2。假如现在要对系列进行拓展,添加系列3,可以直接写相应的具体类,很好的迎合了开闭原则。

缺点:

优点中提到了它能很好的适应系列拓展。但相反他对产品种类的拓展无能为力。现在假如要添加ProductC,Oh my god!这下麻烦了,要修改整个工厂结构,包括工厂抽象接口和具体的工厂类!

作用:

从优缺点中可以推出,抽象工厂常用来处理多个系列的抽象。如我们的windows主题,每个主题都是一个系列。又如UI的look and feel,每种风格就对应一个系列。当有多个系列且我们在同一时间只能使用其中一种时,就可以用抽象工厂来实现。

继续阅读