工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
UML图如下: 以计算器程序为例,在简单工厂模式中,在原有的运算上再加一个幂运算的话,需在工厂类中添加一个case语句,改变了原有的代码结构,违背了开放-封闭原则。于是把原来工厂中的case语句也拆开成子类继承原工厂类,就可以实现添加或删除模块而不影响原有代码,即符合了开放-封闭原则。
case
但是这样一来,判断的重担又集中在了客户端代码上了。