• 湖州:展国学魅力 扬传统礼仪(图) 2020-02-19
  • 湖南宁远通报7起党员干部案件:涉贩毒开设赌场等 2020-02-19
  • 新房才砌半堵墙 装修公司“跑路”了 2020-02-18
  • 2018亚洲消费电子展 车企携手科技公司或成共赢新趋势 2020-02-18
  • 行书书法欣赏,行书就是讲究行云流水般书写自如 2020-02-10
  • 高清:中国男篮抵达洛杉矶 长途飞行队员略显疲惫 2020-02-10
  • 一进门就被惊艳到,玄关还可以这样做?! 2020-02-04
  • 70年 使命·梦想·荣光 2020-02-01
  • 帕巴拉·格列朗杰简历 2020-01-30
  • 重庆的底气,都在人口规划里了 2020-01-30
  • 降电价,还有哪些空间(聚焦高质量发展·降低企业用能成本④) 2020-01-29
  • 主力资金近三日大量撤出这些概念股 2020-01-29
  • 用药晚一步,起效来不及 2020-01-27
  • 第535期:草莓被评“最脏水果”?!真OR假 2020-01-27
  • 资本导向的结果。[上火][上火] 2020-01-22
  • 简单工厂模式

    浏览:1137 发布日期:2018/10/09 分类:业务逻辑 关键字: php设计模式
    简单工厂模式,用于需求不明确(不知道有多少操作)时候可以用的设计模式,例如加减乘除

    遇到需求暂不明确(不知道有多少操作)的时候用到的设计模式。

    首先一个操作类型抽象类用于获值赋值。<?php

        /**
         * Created by PhpStorm.
         * User: antion
         * Date: 2018/10/9
         * Time: 11:34
         * Var:操作类型抽象类
         */
        abstract class Operation
        {
            protected $numberA = 0;
            protected $numberB = 0;

            abstract function getResult();

            public function setNumberA($number)
            {
                $this->numberA = $number;
            }

            public function setNumberB($number)
            {
                $this->numberB = $number;
            }

        }
    在之后是操作方法,比如加法。<?php

        /**
         * Created by PhpStorm.
         * User: antion
         * Date: 2018/10/9
         * Time: 11:38
         * Var:四则运算加法
         */
        class Add extends Operation
        {
            public function getResult()
            {
                return $this->numberA + $this->numberB;
            }
        }
    这时候正常情况是直接写一个调用方法用它,但是我们的需求暂时不明确,所以要有一个统筹所有操作的类。也就是工厂类<?php

        /**
         * Created by PhpStorm.
         * User: antion
         * Date: 2018/10/9
         * Time: 11:40
         * Var:工厂类.
         */
        class Factory
        {
            public function create($operate)
            {
                switch ($operate) {
                    case '+':
                        $result = new Add();
                        break;
                    default:
                        throw new \InvalidArgumentException('暂不支持的运算');
                }
                return $result;
            }
        }
    这时候在写调用方法 就很清晰明了了。<?php
        /**
         * Created by PhpStorm.
         * User: antion
         * Date: 2018/10/9
         * Time: 11:36
         * Var:客户端
         */
        include_once "Operation.php";
        include_once "Factory.php";
        include_once "Add.php";

        class Client
        {
            public function test()
            {
                $factory = new Factory();
                $operation = $factory->create('+');
                $operation->setNumberA(1);
                $operation->setNumberB(2);
                $result = $operation->getResult();
                echo $result;
            }
        }

        $client = new Client();
        $client->test();
    评论( 相关
    后面还有条评论,点击查看>>
  • 湖州:展国学魅力 扬传统礼仪(图) 2020-02-19
  • 湖南宁远通报7起党员干部案件:涉贩毒开设赌场等 2020-02-19
  • 新房才砌半堵墙 装修公司“跑路”了 2020-02-18
  • 2018亚洲消费电子展 车企携手科技公司或成共赢新趋势 2020-02-18
  • 行书书法欣赏,行书就是讲究行云流水般书写自如 2020-02-10
  • 高清:中国男篮抵达洛杉矶 长途飞行队员略显疲惫 2020-02-10
  • 一进门就被惊艳到,玄关还可以这样做?! 2020-02-04
  • 70年 使命·梦想·荣光 2020-02-01
  • 帕巴拉·格列朗杰简历 2020-01-30
  • 重庆的底气,都在人口规划里了 2020-01-30
  • 降电价,还有哪些空间(聚焦高质量发展·降低企业用能成本④) 2020-01-29
  • 主力资金近三日大量撤出这些概念股 2020-01-29
  • 用药晚一步,起效来不及 2020-01-27
  • 第535期:草莓被评“最脏水果”?!真OR假 2020-01-27
  • 资本导向的结果。[上火][上火] 2020-01-22
  • 北京pk10锁定前5码技巧 新时时彩五星遗漏 3D 万达赚钱 白小姐旗袍αb版彩图 低息股票配资 广东11选5助手 一码中特提前公开验证 安徽时时彩中奖规则 雷速体育电脑版有吗