💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
最近对于设计模式中的工厂三姐妹——大姐(抽象工厂)、二姐(工厂模式)、三姐(简单工厂),进一步学习了,以下是我的一些认识。 ### 一、简单工厂 ![](https://box.kancloud.cn/2016-04-07_57060889522cd.jpg) 运用了一个单独的类将创建实例的过程独立出来,这就是简单工厂类,如:简单运算工厂类,至于在运用的过程中,如果增加运算运算,需要修改运算工厂类,这就违背了 开放—封闭原则(尽可能使代码做到扩展的开放,更改的封闭,也就是对于程序的改动通过增加代码进行,而不是更改现有的代码)。 ### 二、工厂模式 ![](https://box.kancloud.cn/2016-04-07_5706088969678.jpg) 相对于以上的简单工厂增加了工厂子类,使一个类的实例话延迟到子类,这样在增加运算的时候只需要增加对应的运算工厂就可以了,这样就解决了简单工厂不符合开放-封闭原则的缺点。 **简单工厂VS工厂方法** 工厂方法解决了简单工厂加Case判断的麻烦,但是每次增加运算需要在代码中增加相关的工厂 并且再去修改客户端,这样也是很复杂的。 其实完全可以运用简单工厂+反射,这样就比单单的工厂方法简单多了。 ### 三、抽象工厂 ![](https://box.kancloud.cn/2016-04-07_570608897f035.jpg) 抽象工厂易于交换产品系列(一个应用只需要在初始化的过程中出现一次,所以改变应用的具体工厂会很容易),并且将创建实例过程与客户端分离,产品的具体类名也被具体的工厂实现分离。 但是如果增加功能时,抽象工厂需要修改很多地方,这里就用一个简单工厂代替了所有具体工厂。 问题又出来了,用简单工厂会遇到Case判断分支的麻烦,不过没关系,前面提到过运用反射这个问题就很容易解决了。 对于工厂三姐妹目前只是了解了这些,相信会在以后的编程路上对她们的理解更加深刻,期待以后的再次相遇。