在学习了这三种设计模式以后我觉的,这三者都有各自的优缺点,有各自的应用场景。
首先是简单工厂模式
简单工厂符合单一职责原则,工厂类就是只负责创建对象,其他的具体类也是只有属于他自己的职责,这种模式也具有较强的灵活性,但是简单工厂违背了开闭原则,想要添加新的功能就要修改原来的代码。
然后是工厂模式
工厂模式符合单一职责原则,在工厂类下增加具体子工厂,使得对象的实例化延迟到子类,这种模式牺牲了灵活性,但是满足了开闭原则,在增加功能的时候,增加新的子工厂以及实现就可以了。但是他需要客户端来决定实例化哪一个工厂来实现运算,这样就降低了灵活性。
最后是抽象工厂模式
抽象工厂符合单一职责原则,也满足开闭原则。它最大的好处就是已预交换产品系列,由于具体工厂,在一个应用中只需要在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,只需改变具体的工厂即可。
工厂模式和抽象工厂模式的区别是:
第一、工厂模式只有一个抽象产品类,而抽象工厂有多个抽象产品类,也就是说,当抽象工厂模式如果只有一个抽象产品的话就是一个工厂模式。
第二、工厂模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。