page contents

开发人员都应该了解的设计模式,从简单工厂模式开始

今天我们来看一下两个设计模式:简单工厂模式和工厂方法模式。话不多说,我们用一个例子来分析。 题目:用PHP语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到运算结果。 根据...

今天我们来看一下两个设计模式:简单工厂模式和工厂方法模式。话不多说,我们用一个例子来分析。

题目:用PHP语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到运算结果。

根据题目要求我们可以画出如下结构图:

开发人员都应该了解的设计模式,从简单工厂模式开始

首先抽象出各个运算方法需要的继承基类

<?php

abstract class OperatorService

{

private $numberA;

private $numberB;

public function setNumberA($num)

{

$this->numberA = $num;

}

public function setNumberB($num)

{

$this->numberB = $num;

}

public function getNumberA()

{

return $this->numberA;

}

public function getNumberB()

{

return $this->numberB;

}

abstract function getResult();

}

开发人员都应该了解的设计模式,从简单工厂模式开始

实现各种运算方法类

加法运算类:

<?php

namespace App\Service\Operate;

class OperateAddService extends OperatorService

{

public function getResult()

{

$result = $this->getNumberA() + $this->getNumberB();

return $result;

}

}

减法运算类:

<?php

namespace App\Service\Operate;

class OperateSubService extends OperatorService

{

public function getResult()

{

$result = $this->getNumberA() - $this->getNumberB();

return $result;

}

}

乘法运算类:

<?php

namespace App\Service\Operate;

class OperateMulService extends OperatorService

{

public function getResult()

{

$result = $this->getNumberA() * $this->getNumberB();

return $result;

}

}

除法运算类:

<?php

namespace App\Service\Operate;

class OperateDivService extends OperatorService

{

public function getResult()

{

if (!empty($this->getNumberB())) {

$result = $this->getNumberA() / $this->getNumberB();

} else {

$result = '错误';

}

return $result;

}

}

开发人员都应该了解的设计模式,从简单工厂模式开始

简单运算工厂类

以上基础的运算方法类都已经实现了,那么我们就可以实现简单工厂类啦。

<?php

namespace App\Service\Operate;

class OperateFactory

{

public static function dealWithOperator($params)

{

$operator = $params['operator'];

switch ($operator) {

case '+':

$service = new OperateAddService();

break;

case '-':

$service = new OperateSubService();

break;

case '*':

$service = new OperateMulService();

break;

case '/':

$service = new OperateDivService();

break;

default:

break;

}

return $service;

}

}

好啦,简单工厂模式就介绍完啦,通过例子介绍是不是更加清晰明了呢。

  • 发表于 2020-02-24 17:32
  • 阅读 ( 469 )
  • 分类:PHP开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1135 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1316 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章