php设计模式(一)创建
1、创建
单例模式:确保一个类只有一个实例,并提供一个全局访问点。 使用static 静态变量和静态类
工厂模式:主要是把工厂抽象出来一个抽象类,子类继承,通过子类构建,调用
抽象工厂模式:抽象工厂模式的核心就是 共创抽象类不止一个子类的构建,比如,我要发消息,还要推送一条消息,创建两个子类的构建方法
<?php //工厂模式 interface send { public function send(); } class ali implements send{ public function send(){ echo 'ali send'; } } class tx implements send{ public function send() { echo 'tx'; } } interface push { public function push(); } class aliPush implements push{ public function push(){ echo 'ali send'; } } class txPush implements push{ public function push() { echo 'tx'; } } abstract class abFac{ public function crateMessage(){} public function cratePush(){} } class AliFac extends abFac{ public function crateMessage() { return new ali(); } public function cratePush() { return new aliPush(); } } class TxFac extends abFac{ public function crateMessage() { return new tx(); } public function cratePush() { return new txPush(); } } $c = new AliFac(); $c->crateMessage(); $c->cratePush();
建造者模式:
<?php //产品类,你可以把它想象成我们要建造的房子。这时的房子还没有任何内容,我们需要给它添砖加瓦。 class Product{ private $attributes = []; public function Add($string){ $this->attributes[] = $string; } public function show(){ foreach($this->attributes as $k=>$v){ echo $v.PHP_EOL; } } } //建筑商 interface Bulider{ public function BuildPartA(); public function BuildPartB(); public function GetResult(); } class ConcreteBuilder1 implements Bulider{ private $product; public function __construct() { $this->product = new Product(); } public function BuildPartA(){ $this->product->Add('部件A'); } public function BuildPartB(){ $this->product->Add('部件B'); } public function GetResult(){ return $this->product; } } //构造器,构造器,用来调用建造者进行生产。没错,就是我们的工程队。它 class Director{ public function __construct($builder) { $builder->BuildPartA(); $builder->BuildPartB(); } } $con1 = new ConcreteBuilder1(); $c = new Director($con1); $ccc = $con1->GetResult()->show();
原型模式:
主要是__clone 应该叫做克隆模式,类里边儿有引用的时候注意下
2、结构
适配器模式:结合两个不兼容的接口。
3、行为