b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

简单工厂模式总结_简单工厂模式_简单工厂模式c#(2)

电脑杂谈  发布时间:2017-01-17 04:01:50  来源:网络整理

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

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...