参考资料:
1. 百度百科:点击打开链接
2. 《大话设计模式(程杰)》
3. 《JAVA与模式》之简单工厂模式 点击打开链接
简单工厂模式的实质:工厂类和多态
1. 工厂类,根据外界传入的参数,动态决定创建哪个产品类的实例。(工厂类是简单工厂的核心)
2. 工厂类中一般有一个static函数,用于获取产品类的实例(此实例是子类或者接口的实现类)。所以此设计模式又叫做:静态工厂方法(Static Factory Method)模式。
3. 产品类都有共同的父类(或者实现共同的接口)。父类(或接口)中规定子类必须重写方法的样式(方法名,参数,返回值),子类去中处理具体的业务逻辑。
优点:
1. 外界调用的时候,可以免除直接创建对象的责任。简单工厂模式通过这种做法实现了对责任的分割。职责更明确。
2. 扩展性:增加新的业务逻辑,需要:1.增加一个新的父类的实现类 2.工厂类中增加一个新的逻辑判断。
缺点:
1. 工厂类集中了所有的类创建逻辑,当有复杂的多层次等级结构时,所有的业务逻辑都在这个工厂类中实现。工厂类不能工作了,整个系统都会受到影响。
2. 扩展时候需要修改工厂类,开放-封闭原则处理的不好。可能因此,简单工程模式不属于23种GOF设计模式之一。
3. 如果系统复杂,层次结构多的时候,扩展过程中,工厂类会变的很复杂。这不利于系统的维护和扩展。
使用场景:
1. 适合结构简单,产品类较少。最好是在系统设计之初,就预估产品类的多少的情形。
需要举例子:
通过实际的使用场景,可以深刻理解,快速记住这些抽象的设计模式。