设计模式4-工厂模式总结

转自 http://blog.jobbole.com/109594/

工厂模式实际上包含了3中设计模式,简单工厂,工厂和抽象工厂,关键点如下:

一、三种工厂的实现是越来越复杂的

二、简单工厂通过构造时传入的标识来生产产品,不同产品都在同一个工厂中生产,这种判断会随着产品的增加而增加,给扩展和维护带来麻烦

三、工厂模式中,一个工厂生产一个产品,所有产品派生于同一个抽象产品(或产品接口),无法解决产品族和产品等级结构的问题

四、抽象工厂模式中,一个工厂生产多个产品,它们是一个产品族,不同的产品族的产品派生于不同的抽象产品(或产品接口)。

好了,如果你能理解上面的关键点,说明你对工厂模式已经理解的很好了,你仍然可能面临下面的问题:

  1. 在上面的代码中,都使用了接口来表达抽象工厂或者抽象产品,那么可以用抽象类吗?有何区别?

从功能上说,完全可以,甚至可以用接口来定义行为,用抽象类来抽象属性。抽象类更加偏向于属性的抽象,而用接口更加偏向行为的规范与统一。使用接口有更好的可扩展性和可维护性,更加灵活实现松散耦合,所以编程原则中有一条是针对接口编程而不是针对类编程。

2. 到底何时应该用工厂模式

根据具体业务需求。不要认为简单工厂是用switch case就觉得一无是处,也不要觉得抽象工厂比较高大上就到处套。我们使用设计模式是为了解决问题而不是炫技,所以根据三种工厂模式的特质,以及对未来扩展的预期,来确定使用哪种工厂模式。

猜你喜欢

转载自blog.csdn.net/sinat_27143551/article/details/80194813