测试结构
我是苹果,水果的一种 苹果干大概也是白色的吧 我是苹果干,果干的一种 苹果干没吃过,打个也是酸酸的吧 我是苹果汁,果汁的一种 苹果汁大概是白色的吧 苹果汁酸酸的 _________________________________________ 我是橙子,水果的一种 橙子干大概也是橙黄色的吧 我是橙子干,果干的一种 橙子干没吃过 应该是酸酸甜甜的 我是橙汁,果汁的一种 橙汁是橙色的吧 橙汁汁酸酸甜甜的 _________________________________________ 我是香蕉,水果的一种 香蕉是黄色的 香蕉馋起来很甜很滑 香蕉干大概也是黄色的吧 我是香蕉干,果干的一种 香蕉干甜甜的 我是香蕉汁,果汁的一种 香蕉汁大概是白色的吧 香蕉汁甜甜的抽象工厂利弊
利:
适合复杂业务需求,清晰描述复杂关系。
专职专事,子类实现具体产品族业务。
弊:
违背开闭原则,新增产品族或者产品等级需要修改代码(产品迭代升级是有周期的)
增加系统的抽象性和理解难度。
抽象工厂类图
总结工厂模式是一种面向对象程序封装,属于设计模式的创建型模式。客户端或者调用者需要的对象由工厂创建,不需要知道创建对象复杂的业务逻辑。简单工厂模式到工厂方法模式,再到抽象工厂模式。其实是一种社会进步的表现。
简单工厂就是一个小作坊,只要是工厂有这种产品都可以去生产。这就造成了管理不规范,维护困难。注定的简单工厂就是简单工厂,发展壮大不起来。当是呢方便,就好比你需要一箱牛奶,你去小超市就可以拿了,肯定不需要费九牛二虎之力去大草原找牛去挤奶吧。
工厂方法模式对应流水线生产企业。他们的产品比较少,管理规范,维护简单。这样的公司能够做大,出名,就好像那些只做单一产品的企业,比如服装工厂,塑料工厂。但是呢,产品单一,面临的竞争压力大,面临更复杂的业务束手无策,很容易被别人取而代之。对于新的产品,就要新建工程,新增流水线,投入成本太高。
抽象工厂模式:对应现代化产业链代工厂,生产、管理规范。强调的是产业链,一系列相互关联的产品。形成了一个产品生态。让用户不可或缺,绝对是世界级的大企业,比如华为,以及一些世界500强公司。他面临的是一个产业链的生产管理。抽象工厂模式封装的是复杂的产品关系业务。