工厂模式有那几种,
各模式的弊端和优越性
1. 简单工厂模式
屏幕快照 2017-07-14 下午3.48.19.png在新加一个product时,需要新家一个继承IProduct的产品类,并且去修改Factory类里创建对象的逻辑,加一个case语句,修改的是工厂类,上层客户端是不需要修改的。只需要针对新产品调用工厂类的创建方法创建新产品就可以了
优点:工厂中包含了必要的逻辑判断,根据客户端选择条件动态实例化相关的类,在客户端来说去除了与具体产品的依赖。
缺点:1.违背了开放-封闭原则,每次添加新产品时需要在工厂类中加一个逻辑判断。把逻辑引入到更上层的客户端。
- 在调用工厂类方法创建了好几个对象时,需要修改对象类型时,需要修改多处代码
2.工厂方法模式
屏幕快照 2017-07-14 下午3.56.51.png与简单工厂相比,多了一个工厂的抽象类,各种工厂继承这个抽象类,实现接口。客户端使用对象时,根据自己的需求调用不同的工厂类进行创建对象。
优点:添加新产品时,整个工厂和产品体系没有做修改,只是进行了一些扩展
要修改产品类型时,只需要修改一处就可以了
屏幕快照 2017-07-14 下午4.13.14.png
缺点:每加一个产品不单要加产品类,还需要加一个产品工厂的类
3. 抽象工厂模式
屏幕快照 2017-07-14 下午4.28.46.png抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需制定她们的具体的类
为了创建不同的产品对象,客户端需要创建不同的产品工厂
网友评论