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

    一、简单工厂模式

       1、起因

        最近在看一本大话设计模式一书,感觉上面讲述的富有故事性,引导你一步一步的走进设计模式的世界。首先我先看到的是简单工厂模式,对此我想给自己做一个总结,给自己做一个提示。

       2、代码

        简单介绍一下功能:用面向对象的思想做一个简单的计算器,实现的方式自己选择。

        首先这是一个用到了面向对象的思想,我们知道面向对象的设计思想就是:封装、继承、多态。这样做的好处就是为了程序的扩展性和代码复用性。可以实现松耦合。

      (1)下面是运算抽象类,和继承它的子类(加法,减法,乘法,除法)

    /**
     * 运算抽象类
     * @author lixiaochao
     *
     */
    public abstract class Operation {
        
        protected double _numberA = 0;
        protected double _numberB = 0;
        public double get_numberA() {
            return _numberA;
        }
        public void set_numberA(double _numberA) {
            this._numberA = _numberA;
        }
        public double get_numberB() {
            return _numberB;
        }
        public void set_numberB(double _numberB) {
            this._numberB = _numberB;
        }
        
        public double getResult(){
            double result = 0;
            return result;
        }
        
    }
    /**
     * 加法运算
     * @author lixiaochao
     *
     */
    class OperationAdd extends Operation{
        
        public double getResult(){
            return _numberA + _numberB;
        }
    }
    /**
     * 减法运算
     * @author lixiaochao
     *
     */
    class OperationSub extends Operation{
        public double getResult(){
            return _numberA - _numberB;
        }
    }
    /**
     * 乘法运算
     * @author lixiaochao
     */
    class OperationMul extends Operation{
        public double getResult(){
            return _numberA * _numberB;
        }
    }
    /**
     * 除法运算
     * @author lixiaochao
     *
     */
    class OperationDiv extends Operation{
        public double getResult(){
            if(_numberB == 0){
                throw new RuntimeException("被除数不能为0");
            }
            return _numberA / _numberB;
        }
    }

      (3)下面是简单工厂的实现类。

    /**
     * 简单工厂模式
     * @author lixiaochao
     *
     */
    public class OperationFactory {
        public static Operation createOperation(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;
        }
    }

      (4)简单工厂的测试方法

    /**
     * 简单工厂模式测试
     * @author lixiaochao
     *
     */
    public class SimpleFactoryTest {
        public static void main(String[] args) {
            Operation oper ;
            String operate = "*";
            oper = OperationFactory.createOperation(operate);
            oper.set_numberA(8);
            oper.set_numberB(2);
            double result = oper.getResult();
            System.out.println(oper.get_numberA()
                    +operate+oper.get_numberB()+" 的结果是:"+result);
        }
    }

     (3)结果是:

    3、总结

    简单工厂方法:个人理解为由工厂方法代理根据要求生成我们所需要的对象。这样有利于代码的复用性和可扩展性。

    4、简单记录,方便记忆。做事细心,方无愧我心。不足之处,还望大神指点。

  • 相关阅读:
    Swing 添加Esc快捷键退出程序
    DefaultTableCellRenderer 自定义
    项目清理和删除svn信息(转)
    时间转换工具类
    Java Swing 日期控件(转载)
    Eureka原理
    SpringCloud之Eureka注册中心集群篇
    spring boot及spring cloud介绍
    spring cloud 服务注册/发现/提供/调用 demo
    eclipse构建maven+scala+spark工程
  • 原文地址:https://www.cnblogs.com/lixiaochao/p/5787634.html
Copyright © 2011-2022 走看看