zoukankan      html  css  js  c++  java
  • 设计模式学习笔记——简单工厂模式

    UML类图:

    Java版代码:

    abstract class Operation {
        private double numberA;
        private double numberB;
    
        public double getNumberA() {
            return numberA;
        }
    
        public void setNumberA(double numberA) {
            this.numberA = numberA;
        }
    
        public double getNumberB() {
            return numberB;
        }
    
        public void setNumberB(double numberB) {
            this.numberB = numberB;
        }
    
        public abstract double GetResult();
    
    }
    
    class OperationAdd extends Operation {
        @Override
        public double GetResult() {
            // TODO Auto-generated method stub
            double result = 0;
            result = getNumberA() + getNumberB();
            return result;
        }
    }
    
    class OperationSub extends Operation{
        @Override
        public double GetResult() {
            // TODO Auto-generated method stub
            double result=0;
            result=getNumberA()-getNumberB();
            return result;
        }
    }
    
    class OperationMul extends Operation{
        @Override
        public double GetResult() {
            // TODO Auto-generated method stub
            double result=0;
            result=getNumberA()*getNumberB();
            return result;
        }
    }
    
    class operationDiv extends Operation{
        @Override
        public double GetResult() {
            // TODO Auto-generated method stub
            double result=0;
            if(getNumberB()==0){
                System.out.println("除数不能为零!");
            }else{
                result=getNumberA()/getNumberB();
            }
            return result;
        }
    }
    
    class OperationFactory{
        public static Operation createOperate(String operate){
            Operation oper=null;
            switch(operate){
            case "+":
                oper=new OperationAdd();
                break;
            case "-":
                oper=new OperationSub();
                break;
            case "*":
                oper=new OperationMul();
                break;
            case "/":
                oper=new operationDiv();
                break;
            }
            return oper;
        }
    }
    public class SimpleFactory{
        public static void main(String[] args){
            Operation oper;
            oper =OperationFactory.createOperate("+");
            oper.setNumberA(1);
            oper.setNumberB(2);
            double result=oper.GetResult();
            System.out.println(result);
        }
    }

    总结:

    这里的工厂类OperationFactory不是与具体的运算类相关联,而是与抽象运算类相关联,这样就降低了耦合度,即使要扩展或修改也不需要大范围的修改代码,

    增强了代码的可维护性和可扩展性。

    
    
  • 相关阅读:
    DataTable转换成IList<T>的简单实现
    websocket
    获取用户使用设备信息
    判断对象是否相等
    关于PC适配
    树形数据结构实现平铺展示
    埋点
    多层表单验证
    表格行拖动,数据中状态值不同的禁止拖拽
    element tree 深度查询
  • 原文地址:https://www.cnblogs.com/kcher90/p/2980267.html
Copyright © 2011-2022 走看看