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

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

2011-04-08 22:07 381 查看
今天学习了简单工厂模式,下面用java实现一下。

用java写一个简单的计算器

首先,写一个抽象Operation类

public abstract class Operation {

protected double numberA;

protected double numberB;

public abstract double getResult();

}


然后,写四个类实现加,减,乘,除,均继承自Operation

public class OperationAdd extends Operation{
@Override
public double getResult() {
// TODO Auto-generated method stub
return numberA+numberB;
}
}
public class OperationSub extends Operation {
@Override
public double getResult() {
// TODO Auto-generated method stub
return numberA-numberB;
}
}
public class OperationMul extends Operation {
@Override
public double getResult() {
// TODO Auto-generated method stub
return numberA*numberB;
}
}
public class OperationDiv extends Operation {
@Override
public double getResult() {
// TODO Auto-generated method stub
return numberA/numberB;
}
}


最后是OperationFactory类的实现,含有一个静态方法

public class OperationFactory {
public static Operation createOperation(char operator)
{
switch (operator)
{
case '+':
return new OperationAdd();
case '-':
return new OperationSub();
case '*':
return new OperationMul();
case '/':
return new OperationDiv();
default:
return null;
}
}
}


以下是主函数所在类

ublic class Program {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try
{
Scanner s = new Scanner(System.in);

System.out.println("输入A");
double numberA = s.nextDouble();

System.out.println("输入运算符+ - * /");
String operator = s.next();

System.out.println("输入B");
double numberB = s.nextDouble();

double res;

Operation o = OperationFactory.createOperation(operator.charAt(0));

o.numberA = numberA;

o.numberB = numberB;

res = o.getResult();
//double res = Operation.getResult(numberA, operator, numberB);

System.out.print("结果是:"+res);
}

catch(Exception e)
{
System.out.print("exception:"+e.getMessage());
}

}
}


总结:简单工厂模式耦合度比较低,可以相当随意的添加其他功能(比如增加开放运算),而且调用也简单
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息