搜索
系统检测到您的用户名不符合规范:

简单工厂模式

浏览:2393 发布日期: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();
收藏
周三省
积分:1190 等级:LV3
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /