《大话设计模式》之工厂方法模式

来源:互联网 发布:淘宝手机端链接生成器 编辑:程序博客网 时间:2024/06/10 01:22

一,定义

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

将类的实例化(具体产品的创建)延迟到工厂类的子类(具体工厂)中完成,即由子类来决定应该实例化(创建)哪一个类。

二,实现

这里写图片描述

定义工厂方法所创建的对象的接口public interface Operation {    public double GetResult(double NumberA,double NumberB);}
public class OperationAdd implements Operation{    @Override    public double GetResult(double NumberA, double NumberB) {        System.out.println("OperationAdd");        return NumberA+NumberB;    }}
public class OperationSub implements Operation {    @Override    public double GetResult(double NumberA, double NumberB) {        System.out.println("OperationSub");        return NumberA-NumberB;    }}
public interface IFactory {    Operation CreatOperation();}
public class AddFactory implements IFactory {    @Override    public Operation CreatOperation() {        return new OperationAdd();    }}
public class SubFactory implements IFactory {    @Override    public Operation CreatOperation() {        return new OperationSub();    }}
public class Client {    public static void main(String[] args) {        IFactory operFactory=new AddFactory();        Operation oper=operFactory.CreatOperation();        double d=oper.GetResult(10, 20);        System.out.println(d);    }}

三 总结

解决使用 简单工厂模式 时,工厂一旦需要生产新产品就需要修改工厂类的方法逻辑,违背了“开放 - 关闭原则”