用例子来理解:
顾客去饭店吃饭,跟服务员说,我需要一杯果汁,服务员(工厂)便可提供一杯果汁,这就是简单工厂模式。
后来饮料品种越来越多,饭店每增加一款饮料都需要让服务员知晓,否则顾客说的时候,服务员就无法提供(这也就是对工厂类的修改),于是饭店老板,直接买了饮料机(专职工厂),顾客想喝什么,自己去饮料机取,饭店以后想增加饮料,只要增加饮料机即可。这里有两个好处,1)顾客不需要说话了,走到某台饮料机,就代表需要相应饮料。2)增加饮料机无需对服务员进行培训(避免修改),只需增加饮料机即可。这就是工厂方法
至于抽象工厂模式,可以用套餐饭来理解,饭店制定了一套标准(抽象工厂,具体工厂需要遵循的工厂接口),所有的套餐饭(具体工厂)必须遵循该标准,比如这个抽象标准可能是:1、需要有饭、2、需要有菜、3、需要有一杯果汁,于是有了第一个套餐饭(具体工厂):家常大米饭+鱼香肉丝+橙汁,我们称之为套餐A,那顾客点套餐A,即可获得刚才所说产品。当然这里面的米饭、菜、以及果汁(具体产品对象),也需要遵守相应的产品规则(产品接口),以保证顾客能吃到放心食品
在这里我们看到,对于抽象工厂是无需指定具体的饭,菜,果汁,但是这些饭、菜、果汁确实相互依赖的,这也是抽象工厂的意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
接口签名与实战课:https://edu.csdn.net/course/detail/29850