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、简单记录,方便记忆。做事细心,方无愧我心。不足之处,还望大神指点。

  • 相关阅读:
    [erlang 002]gen_server中何时会跑到terminate函数
    设计模式:桥接模式
    设计模式:组合模式
    Harbor:镜像上传和下载
    Harbor:简介和安装
    Docker:compose
    ThinkPHP的静态化页面方法
    php使用memcached详解
    大话PHP设计模式
    PHP魔术方法使用
  • 原文地址:https://www.cnblogs.com/lixiaochao/p/5787634.html
Copyright © 2011-2022 走看看