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);
    		
    	}
    }
    



         

       

  • 相关阅读:
    十分钟学会Java8:lambda表达式和Stream API
    史上最全的Spring Boot Cache使用与整合
    史上最全的Spring Boot Starter开发手册
    深入理解JAVA虚拟机(内存模型+GC算法+JVM调优)
    深入理解Mybatis技术与原理
    c++入门之命名空间存在的意义
    机器学习第一篇——最近邻kNN
    Python学习第十八篇——低耦合函数设计思想
    Python学习第十六篇——异常处理
    Python学习第十五篇——类继承和类实例化
  • 原文地址:https://www.cnblogs.com/riasky/p/3471516.html
Copyright © 2011-2022 走看看