简单工厂 工厂方法 抽象工厂 了解一下

简单工厂工厂可以创建同一系列的产品,产品的接口一致,但工厂就要根据参数进行判断到底创建哪种产品(简单工厂没有子类,一般来说直接在工厂里面通过枚举来创建实例)。

比如:面馆有洋葱面,牛肉面,鸡蛋面...你要吃哪种面,就要根据你的口味决定。

工厂方法:可以有多种工厂,工厂有共同的接口,一个工厂只能产生一种产品,比起简单工厂,工厂方法不需要判断,降低了耦合(定义创建对象的接口,而实例化由子类负责,并且只能实例化一种类

比如:杨老板有三个店铺:只卖包子的包子铺,只卖水的水吧,只卖咖啡的咖啡店

抽象工厂:可以产生多个系列的产品(涉及到产品族的概念:位于不同产品等级中,功能有关联的产品组成的家族)(定义创建对象的接口,定义所有的产品,而实例化由子类负责,产品能否创建全部由它决定

比如:麦当劳老板:可乐系统产品,汉堡系列产品,每种产品又有大中小三种


简单工厂和工厂方法最大的区别是:工厂方法不在工厂类中进行逻辑判断,系统可以为不同产品类提供不同的工厂,不同的工厂类产生不同的产品。(工厂方法便于增加新的产品)

工厂方法和抽象工厂最大的区别是:抽象工厂创建对象更加复杂,抽象工厂的意图是:提供一个接口,可以创建多个产品族中的产品对象,比如NSNumber中的NSCFNumber和NSCFBoolean。(由于产品的创建都是抽象类决定的,所以增加新产品不便)


猜你喜欢

转载自blog.csdn.net/xiao2218897/article/details/80860852
今日推荐