简单工厂模式:
简单工厂模式主要通过定义一个工厂类来实例化其他的,而这些其他类通常继承自同一个父类。
简单工厂模式组成:
简单工厂模式主要有三部分组成:
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”的条件分支,违背了“对扩展开放,对修改封闭的原则”。
277

被折叠的 条评论
为什么被折叠?



