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不是与具体的运算类相关联,而是与抽象运算类相关联,这样就降低了耦合度,即使要扩展或修改也不需要大范围的修改代码,

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

    
    
  • 相关阅读:
    mongoDB--1 概念
    PythonWeb-Django框架学习-Demo2-创建你的小WEB应用
    PythonWeb-Django框架学习-Demo1-快速搭建项目
    Python--Demo18--异步IO之协程
    Python--Demo17--WEB应用程序之模板和MVC
    Python--Demo16--WEB应用程序之框架的好处
    Python--Demo15--WEB应用程序WGSI接口
    快速了解HTTP协议
    Python--Demo14--正则表达式
    Python--Demo13--高级特性匿名函数、推导式、迭代器、生成器
  • 原文地址:https://www.cnblogs.com/kcher90/p/2980267.html
Copyright © 2011-2022 走看看