zoukankan      html  css  js  c++  java
  • 大话设计模式之——简单工厂模式

    本系列博客为《大话设计模式》这本书的读后感,如果感兴趣的朋友请去看原书


    一、封装、继承与多态

         封装的一个好处就是实现业务逻辑和界面逻辑的分离。而继承则可以实现修改某一个业务逻辑而不影响到其他的业务逻辑。


    二、可维护性、可复用性、可拓展性、灵活性的感性认识

         在该书中举了一个“活字印刷”的例子,本人觉得挺形象的。用那个例子来解释以上4个名次就是:

         可维护性:能够修改需要修改的字。

         可复用性:无需修改的字可以重复使用

         可拓展性 :可以在原来的基础上增加新的字进去

         灵活性:印有字的模板既可以横着排,也可以竖着排


    三、UML图



    四、代码实现(Java版)


    1、Operation

    public class Operation {
    	public double numberA = 0;
    	public double numberB = 0;
    	
    	public double getResult() throws Exception{
    		
    		return 0;
    	}
    }
    


    2、OperationAdd

    public class OperationAdd extends Operation {
    
    	@Override
    	public double getResult() {
    		return numberA + numberB;
    	}
    
    }
    


    3、OperationSub

    public class OperationSub  extends Operation{
    
    	@Override
    	public double getResult() {
    		return numberA - numberB;
    	}
    
    }
    


    4、OperationMul

    public class OperationMul  extends Operation {
    
    	@Override
    	public double getResult() {
    		return numberA * numberB;
    	}
    
    }
    


    5、OperationDiv

    public class OperationDiv  extends Operation {
    
    	@Override
    	public double getResult() throws Exception {
    		
    		if(numberB == 0){
    			throw new Exception("除数不能为0");
    		}
    		return numberA / numberB;
    	}
    
    }
    


    6、OperationFactory

    public class OperationFactory {
    
    	public static Operation createOperation(String operator) {
    
    		Operation opr = null;
    		switch (operator) {
    		case "+":
                opr = new OperationAdd();
    			break;
    
    		case "-":
    			opr = new OperationSub();
    			break;
    
    		case "*":
    			opr = new OperationMul();
    			break;
    
    		case "/":
    			opr = new OperationDiv();
    			break;
    
    		default:
    			break;
    		}
    		
    		return opr;
    	}
    }
    


    --------------------------------------------以上是业务逻辑,以下是界面逻辑-------------------------------------------

    7、UIMain

    import java.util.Scanner;
    
    
    public class UIMain {
    
    	public static void main(String[] args) throws Exception{
    		Scanner scanner = new Scanner(System.in);
    		
    		System.out.println("请输入第一个操作数");
    		double numberA = scanner.nextDouble();
    		
    		System.out.println("请输入操作符");
    		String operator = scanner.next();
    		
    		System.out.println("请输入第二个操作符");
    		double numberB = scanner.nextDouble();
    		
    		
    		Operation opr = OperationFactory.createOperation(operator);
    		opr.numberA = numberA;
    		opr.numberB = numberB;
    		
    		double result = opr.getResult();
    		
    		
    		System.out.println("运算结果为: " + result);
    		
    	}
    }
    



         

       

  • 相关阅读:
    由12306.cn谈谈网站性能技术 岁月无情
    雅虎网站页面性能优化的34条黄金守则 岁月无情
    [纯技术讨论]从12306谈海量事务高速处理系统 岁月无情
    解密淘宝网的开源架构(转) 岁月无情
    HttpCombiner.ashx处理 岁月无情
    转 自定义控件属性的特性大全 岁月无情
    模式窗口window.showModal 岁月无情
    动态加载JSashx的妙用 岁月无情
    ASP.NET中Get和Post的用法 岁月无情
    初学Oracle的笔记(1)——基础内容(实时更新中..)
  • 原文地址:https://www.cnblogs.com/riasky/p/3471516.html
Copyright © 2011-2022 走看看