简单工厂模式
简单工厂模式不属于gof中23种设计模式,但是他对工厂方法模式和抽象工厂模式都有学习的帮助。
简单工厂模式属于创建型设计模式,工厂即生产对象的厂房,模式动机是用户不需要关心工厂中的内部实现,用户只需要提供一个标识信息,抽象工厂类便能给你一个相应的对象,这里标识信息可以是字符串数字都可以,用if,switch什么判断也都可以。它的核心在于工厂类。
举个例子:
电器厂房要生产冰箱和空调,你要生产冰箱你可以传进去一个1,空调传进去2,就能得到相应的对象。这些产品都要继承电器类,因为工厂类中返回类型是基类,这样符合里氏代换原则,父类的指针指向任何一个继承它的子类,最后得到相应的对象由父类的指针指向。
简单工厂的缺点(个人总结):
你要生产的对象必须是工厂类的子类,这就限制的所生产对象的继承,因为java对类是单继承,所以无法再继承别的类。
扩展性,如果你需要生产新的类型,你需要在工厂类中修改下判断条件,这就一定程度上破坏了开闭原则。
工厂类一旦出错,会导致整个系统错误,难以维护。