简单工厂模式

来源:互联网 发布:不用网络的小说 编辑:程序博客网 时间:2024/05/29 03:49

简单工厂模式:
简单工厂模式主要通过定义一个工厂类来实例化其他的,而这些其他类通常继承自同一个父类。

简单工厂模式组成:
简单工厂模式主要有三部分组成:

1、工厂类:这是工厂模式的核心,用于创建其他类的实例。

2、抽闲类或接口:简单工厂所实例化的所有类的父类。

3、具体类:抽象类或接口的子类用于实现具体的逻辑操作。

用一个简单的计算器作为例程代码:

抽象类 Operation

/* 抽象类 Operation */public abstract class Operation {    private double NumberA = 0;    private double NumberB = 0;    public double GetNumberA() {        return NumberA;    }    public double GetNumberB(){        return NumberB;    }    public void SetNumberA(double NumberA){        this.NumberA = NumberA;    }    public void SerNumberB(double NumberB){        this.NumberB = NumberB;    }    /* 抽象方法 */    abstract double GetResult();}

具体实现类 OperationAdd:

public class OperationAdd extends Operation {    public double GetResult()    {        return GetNumberA()+GetNumberB();    }}
public class OperationDel extends Operation {    public double GetResult(){        return this.GetNumberA() - this.GetNumberB();    }}

工厂类 Factory:

public class Factry {    public static Operation createOperation(String operation){        Operation oper = null;        switch (operation) {        case "+":            oper = new OperationAdd();            break;        case "-":            oper = new OperationDel();            break;        default:            break;        }        return oper;    }}

客户端使用 Cucl:

public class Cucl {    public static void main(String[] args) {        // TODO Auto-generated method stub        Operation operation = Factry.createOperation("+");        operation.SetNumberA(5);        operation.SerNumberB(4);        double Result = operation.GetResult();}

uml类图:
这里写图片描述

使用简单工厂类,首先将计算方法和显示分离,然后将计算实例在一个工厂中实现。在增加新的运算时,不需要了解或修改以有的运算类,直接增加新的继承自抽象类的运算方法,然后在工厂类的switch中增加一个分支。

分析:
简单工厂模式最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。缺点在于增加新的算法,需要增加新的算法类的同时,还要向运算工厂类的方法里加”Case”的条件分支,违背了“对扩展开放,对修改封闭的原则”。

原创粉丝点击