4. 那么如何让计算器知道我是要用哪一种运算呢?也就是说到底要实例化哪一个具体的运算类,Add?Sub?Mul?Div?这时就应该考虑用 一个单独的类来做这个创造具体实例的过程,这个类就是工厂类。如下:
public class OperationFactory {
public Operation createOperation(String operate){
Operation oper = null;
operate = operate.trim();
if("".equals(operate) || operate == null)
try {
throw new Exception("您还没有输入操作符!");
} catch (Exception e) {
e.printStackTrace();
}
if(operate.equals("+"))
oper = new Add();
if(operate.equals("-"))
oper = new Sub();
if(operate.equals("*"))
oper = new Mul();
if(operate.equals("/"))
oper = new Div();
return oper;
}
}
5. 这样,用户只要输入运算符,工厂类就可以创建合适的实例,通过多态性,即返回给父类的方式实现运算结果。客户端代码如下:
public class Client {
public static void main(String[] args){
try{
double a,b;
String operate;
System.out.println("请输入数字A:");
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
a = Double.valueOf(buf.readLine()).doubleValue();
System.out.println("请输入运算符号(+-*/):");
operate = buf.readLine().trim();
System.out.println("请输入数字B:");
b = Double.valueOf(buf.readLine()).doubleValue();
Operation o = new OperationFactory().createOperation(operate);
o.setA(a);
o.setB(b);
System.out.println(o.getResult());
}catch(Exception e){
e.printStackTrace();
}
}
}
该应用的UML图(from:《大话设计模式》)如下:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-26833-2.html
你还叽叽呱呱
主权都没了