最近对于设计模式中的工厂三姐妹——大姐(抽象工厂)、二姐(工厂模式)、三姐(简单工厂),进一步学习了,以下是我的一些认识。
一、简单工厂
运用了一个单独的类将创建实例的过程独立出来,这就是简单工厂类,如:简单运算工厂类,至于在运用的过程中,如果增加运算运算,需要修改运算工厂类,这就违背了
开放—封闭原则(尽可能使代码做到扩展的开放,更改的封闭,也就是对于程序的改动通过增加代码进行,而不是更改现有的代码)。
二、工厂模式
相对于以上的简单工厂增加了工厂子类,使一个类的实例话延迟到子类,这样在增加运算的时候只需要增加对应的运算工厂就可以了,这样就解决了简单工厂不符合开放-封闭原则的缺点。
简单工厂VS工厂方法
工厂方法解决了简单工厂加Case判断的麻烦,但是每次增加运算需要在代码中增加相关的工厂 并且再去修改客户端,这样也是很复杂的。
其实完全可以运用简单工厂+反射,这样就比单单的工厂方法简单多了。
三、抽象工厂
抽象工厂易于交换产品系列(一个应用只需要在初始化的过程中出现一次,所以改变应用的具体工厂会很容易),并且将创建实例过程与客户端分离,产品的具体类名也被具体的工厂实现分离。
但是如果增加功能时,抽象工厂需要修改很多地方,这里就用一个简单工厂代替了所有具体工厂。
问题又出来了,用简单工厂会遇到Case判断分支的麻烦,不过没关系,前面提到过运用反射这个问题就很容易解决了。
对于工厂三姐妹目前只是了解了这些,相信会在以后的编程路上对她们的理解更加深刻,期待以后的再次相遇。
时间: 2024-10-31 02:14:41