8只设计模式

1. 单例模式

防止多次调用导致new多次(如比较常见的数据库连接),防止服务去当场去世

<?php

/**
 * Class Demo
 * 4个私有
 */
class Demo
{
    //保存实例的成员变量
    private static $_instance;

    //构造方法(设为私用,不许再次调用)
    private function _construct(){

    }

    //克隆方法(设为私用,不许再次调用)
    private function _clone(){

    }

    //获取实例
    static public function getInstance(){
        //如果没有自我实例
        if(!(self::$_instance instanceof self)){
            self::$_instance = new self();
        }
        return self::$_instance;
    }

}

//调用
$demo = Demo::getInstance();

2.工厂模式

工厂模式就像一个工厂的生产方式,只要能生产,不会理会是哪个只员工干活,员工随时可以替换或者更改,意义主要是减少代码之间的耦合度

Personnel.php

/**
 * Class Personnel
 * 员工
 */
class Personnel
{
   
    //熬夜通宵玩命加班ing...
    public function keepWork(){
   
        echo '996';
    }

}

Factory.php

/**
 * Class Factory
 * 某大型养猪厂
 */
class Factory
{
   
    //我有个想法()
    static public function BigPlane(){
   
        //某个员工执行(实例化类,返回整个类)
        $personnel = new Personnel();
        return $personnel;
    }

}

Boss.php

//找到工厂实现
$Plane = Factory::BigPlane();
//工厂某员工实现
$Plane->keepWork();

3.注册模式

注册模式定义对象到全局,保存一个静态的数组,方便获取,生存周期是静态参数模式,与全局参数生产周期相同

class register{
   

    //注册树
    protected static $obj;

    //挂到树上(自挂东南枝)
    function set($alias,$object){
   
        self::$obj[$alias] = $object;
    }

    //获取树上对象
    static function get($name){
   
        return self::$obj[$name];
    }

    //从树上摘除对象
    function _unset($alias){
   
        unset(self::$obj[$alias]);
    }
}

4.适配器模式

基本上采用接口类定义调用方法,在以需要的多种形式实现。如多种数据库的调用,实际连接数据库的代码不一样,但是使用数据库的步骤一样,而适配器就是把规范调用数据库的形式。适配器模式其实和转接口相似,如usb转接器,把usb转为typc-c或者usb接口。适配器模式和接口类搭配使用,所以比较需要了解接口类的使用。
总结:其实就是把一个重复或者比较复杂的功能拆分,减少耦合,方便将来扩展

//声明接口类,定义子类需拥有以下方法
interface IDatebase
{
   
    //连接数据库
    public function conncet($host, $username, $password, $database);
    //操作
    public function query
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值