您的位置:首页 > 编程语言 > Java开发

java设计模式之简单工厂模式

2010-12-16 16:17 513 查看

为什么要用设计模式,这个我就不说了,原因很简单,因为它就是“美”。设计模式我也是刚开始学,现在将我写的一些模拟代码写下,以备日后学习研究提高使用。

首先说下简单工厂模式,这个模式通过一个简单计算器的例子实现。ok上代码

1。所有的计算器都能经过技术后得打计算结果。所以可以抽象出一个计算结果的方法

package com.yjck.simplefactory;
/**
* 操作的接口类,所有的具体实现类的接口类,定义了通用的方法
*/
public interface Operation {
/**
* 获得计算后的结果
* @param a
* @param b
* @return
*/
public double getResult(double a,double b);

}

 

2。基本的四则运算

package com.yjck.simplefactory;

public class OperationAdd implements Operation {
/**
* @see Operation 加法计算
*/
public double getResult(double a, double b) {
return a+b;
}

}

package com.yjck.simplefactory;

public class OperationDiv implements Operation {

/**
* 除法运算
*/
public double getResult(double a, double b) {
// TODO Auto-generated method stub
return a/b;
}

}

package com.yjck.simplefactory;

public class OperationMul implements Operation {

/**
*  乘法运算
*/
public double getResult(double a, double b) {
// TODO Auto-generated method stub
return a*b;
}

}

package com.yjck.simplefactory;

public class OperationSub implements Operation {
/**
* 减法运算
*/
public double getResult(double a, double b) {
// TODO Auto-generated method stub
return a-b;
}

}

 

3。工厂类,根据不同的运算方式生产不同的计算类

package com.yjck.simplefactory;
/**
* 简单工厂模式之工厂类
* 这个类根据操作类型的不同可以自由生成相应的处理类
*/
public class Factory {
public static Operation createOperation(String opt){
Operation operation = null;
if("+".equals(opt)){
operation = new OperationAdd();
}
if("-".equals(opt)){
operation = new OperationSub();
}
if("*".equals(opt)){
operation = new OperationMul();
}
if("/".equals(opt)){
operation = new OperationDiv();
}

return operation;
}
}

4。客户端调用

 

package com.yjck.simplefactory;

public class Run {

/**
* 主类,程序入口
*/
public static void main(String[] args) {
Operation operation = null;
operation = Factory.createOperation("/");
double result = operation.getResult(1.00, 5.33);
System.out.println(result);
}
/**
* ********下面这些话是对简单工厂模式的总结********
* 和以往的java程序写法不同,简单工厂模式充分利用了java的
* 多态机制,成功的将具体的实现类进行了剥离,也就是进行了
* 解耦的操作,使得程序更加灵活,如果我们要对加法进行修改
* 就只需要在实现加法的类中进行修改,如果我们要增加一个计算
* 方法,只需要写一个具体的实现类,然后再factory类中加一个
* 分支语句就OK了。
* ***********************************************
*/
}

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: