php—常见设计模式

Posted 罗茜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php—常见设计模式相关的知识,希望对你有一定的参考价值。

工厂模式

/**
 * 工厂方法或者类生成对象,而不是在代码中直接new
 * 
 * 修改类名的时候,不需要每一个实例化语句都修改
 * 只需要修改对应的工厂方法
 * 
 * Class Factory
 * @package regina
 */
class Factory{

    static function createDatabase(){
        $db = Database::getInstance();
        return $db;
    }
}

单例模式

/**
 * 单例模式,节省资源,一个类只能实例化一个对象
 * 
 * 使某个类的对象仅允许创建一个
 * 
 * 为了实现单例模式,要私有化构造函数和clone魔术方法
 * Class Database
 * @package regina
 */
class Database{

    
    protected static $db;
    private function __construct(){

    }
    private function __clone(){

    }

    static function getInstance(){
        if (self::$db){
            return self::$db;
        }
        self::$db = new Database();
        return self::$db;
    }
}

注册模式

/**
 * 把new出来的对象保存在静态数值中,以便全局共享
 * 全局共享和交换对象
 * Class Register
 * @package regina
 */
class Register{
    protected static $array;
    static function set($name, $Obj){
        echo ‘Register set run....‘;
        self::$array[$name] = $Obj;
    }
    static function get($name){
        echo ‘Register get run....‘;
        return self::$array[$name];
    }

    function _unset($name){
        echo ‘Register unset run....‘;
        unset(self::$array[$name]);
    }
}

适配器模式

/**
 * 将各种截然不同的函数接口封装成统一的API
 * Interface IDatabase
 * @package regina
 */
interface IDatabase{
    function connect($host, $username, $password, $dbname);
    function query();
    function close();
}
class mysqli implements Database{
    protected $conn;
    function connect($host, $username, $password, $dbname){
        echo ‘Mysqli connect run...‘;
    }
    function query(){
        echo ‘Mysqli query run...‘;
    }
    function close(){
        echo ‘Mysqli close run...‘;
    }
}
class Mysql implements Database{
    function connect($host, $username, $password, $dbname){
        echo ‘Mysql connect run...‘;
    }
    function query(){
        echo ‘Mysql query run...‘;
    }
    function close(){
        echo ‘Mysql close run...‘;
    }
}

策略模式

将一组特定的行为和算法封装成类,以适应默写上下文的定义。

挖坑待填~~~~~

 

以上是关于php—常见设计模式的主要内容,如果未能解决你的问题,请参考以下文章

常见的代码片段

Alfred常见使用

使用 Git 来管理 Xcode 中的代码片段

超级有用的9个PHP代码片段

PHP必用代码片段

php—常见设计模式