以大话设计模式计算器为例:
简单工厂方法是由具体执行功能类,工厂类,客户端构成,工厂类有CASE语句,负责创建不同的类,客户端调用工厂类里面的工厂方法,工厂类的工厂方法根据客户端传进去的参数NEW相应的类的对象返回给客户端,客户端得到返回的对象用该对象初始化该对象的成员变量最后调用该对象的方法执行计算,所以功能(计算)类是对客户端暴露变量的,如果要增加类,即增加计算方法,需要增加具体的计算类外,还需要改工厂方法。
工厂方法是每一个功能类对应一个工厂类,但是这些工厂类是继承自同一个抽像工厂类,客户端使用的时候使用抽象工厂的引用,NEW具体工厂的类,执行具体工厂方法得到功能对象,增加新的功能类的时候,只需要增加一个功能类和修改客户端,新建工厂类的对象推迟到了子类去实现。
抽象工厂是简单工厂和工厂方法的结合,它具有多个抽象产品类和一个抽象工厂类,每个抽象产品有多个具体产品,抽象工厂下有多个具体工厂,每个具体工厂负责一个抽象产品下所有具体产品的实例新建,一个具体工厂负责多个具体产品像简单工厂方法,多个具体工厂负责多个抽象产品像工厂模式