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、行为

posted on 2024-10-10 16:21  朽木大叔  阅读(4)  评论(0编辑  收藏  举报

导航