您的位置 首页 php

尚学堂百战程序员:PHP 中的设计模式

设计模式不仅代表着更快开发健壮软件的有用方法,而且还提供了以友好的术语封装大型理念的方法。例如,您可以说您正在编写一个提供松散耦合的消息传递系统,也可以说你正在编写名称为观察者 的模式。

很多良好的应用程序都以 小应用程序 为起点,逐渐发展到大型应用程序,所以没有理由不以此类扎实的编码实践为基础。

既然您已经了解了设计模式以及它们的有用之处,现在我们来看看 PHP 中的常用模式。

建造者模式

又名:生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。

示例代码:

<?php

/**

* chouxiang builer

*/

abstract class Builder

{

protected $car;

abstract public function buildPartA();

abstract public function buildPartB();

abstract public function buildPartC();

abstract public function getResult();

}

class CarBuilder extends Builder

{

function __construct()

{

$this->car = new Car();

}

public function buildPartA(){

$this->car->setPartA(‘发动机’);

}

public function buildPartB(){

$this->car->setPartB(‘轮子’);

}

public function buildPartC(){

$this->car->setPartC(‘其他零件’);

}

public function getResult(){

return $this->car;

}

}

class Car

{

protected $partA;

protected $partB;

protected $partC;

public function setPartA($str){

$this->partA = $str;

}

public function setPartB($str){

$this->partB = $str;

}

public function setPartC($str){

$this->partC = $str;

}

public function show()

{

echo “这辆车由:”.$this->partA.’,’.$this->partB.’,和’.$this->partC.’组成’;

}

}

class Director

{

public $myBuilder;

public function startBuild()

{

$this->myBuilder->buildPartA();

$this->myBuilder->buildPartB();

$this->myBuilder->buildPartC();

return $this->myBuilder->getResult();

}

public function setBuilder(Builder $builder)

{

$this->myBuilder = $builder;

}

}

$carBuilder = new CarBuilder();

$director = new Director();

$director->setBuilder($carBuilder);

$newCar = $director->startBuild();

$newCar->show();

Prototype (原型模式)

有些时候,部分对象需要被初始化多次。而特别是在如果初始化需要耗费大量时间与资源的时候进行预初始化并且存储下这些对象。

<?php

interface Product {

}

class Factory {

private $product;

public function __construct(Product $product) {

$this->product = $product;

}

public function getProduct() {

return clone $this->product;

}

}

class SomeProduct implements Product {

public $name;

}

$prototypeFactory = new Factory(new SomeProduct());

$firstProduct = $prototypeFactory->getProduct();

$firstProduct->name = ‘The first product’;

$secondProduct = $prototypeFactory->getProduct();

$secondProduct->name = ‘Second product’;

print_r($firstProduct->name);

// The first product

print_r($secondProduct->name);

// Second product

“我们相信人人都可以成为一个IT大神,现在开始,选择一条阳光大道,助你入门,学习的路上不再迷茫。这里是北京尚学堂,初学者转行到IT行业的聚集地。”

文章来源:智云一二三科技

文章标题:尚学堂百战程序员:PHP 中的设计模式

文章地址:https://www.zhihuclub.com/151170.shtml

关于作者: 智云科技

热门文章

网站地图