通用技术 php 设计模式系列一

konami1986 · 2016年02月29日 · 最后由 HN 回复于 2016年03月23日 · 1389 次阅读

工厂模式:

class Factroy
{
    static function createDatabase(){
        $db = new Database();
        return $db;
    }
}

//不使用工厂模式
 $db = new Database();
//使用工厂模式
$db  =  Factroy ::createDatabase();

单利模式

class Database
{
   private static $db;
   private function __construct(){ } //构造方法私有化

    static function getInstance() //返回静态对象
    {
        if(self::$db){
            return self::$db;
        }else{
            self::$db  = new self();
            return self::$db;
        }
    }

    public function test(){
        echo 'test';
    }
}

$obj = \Common\Database::getInstance();
$obj->test();

注册树模式

class Register{
     private static $objects;
    //注册到全局树 alias映射 object对象
    static function _set($alias,$object){   //注册
    }
    static function _unset($alias){  /销毁
        unset(self::$objects[$alias]);
  }
  static function get($alias){  //查找
      return self::$objects[$alias];
    }
  }
//然后在工厂类中注册
class Factroy
{

    static function createDatabase(){
        $db = new Object();
        Register::_set('db',$db);
        return $db;
    }
}
共收到 7 条回复 时间 点赞

不错,简洁明了。

两个小建议:

  1. 单例模式打错字了吧。
  2. 使用
```php

这种形式,能加上对应的代码着色

一個疑問,設計模式要怎麼學才是對?
我是一直在模仿別人的做法,但是硬是寫上去了,又把它拆掉。這樣搞了兩個月了,只稍微學會抽象類跟界面行為。

#2 楼 @wkx101 没有多变的需求,或者大规模的功能需求,你永远不知道设计模式有什么用的。多写代码就对了

#2 楼 @wkx101 合适的就是对的。所以需要分析什么情况下合适,什么情况下不合适。然而分析和预测这些情况可能比学设计模式本身还要复杂。

#2 楼 @wkx101
设计模式最重要的就是松耦合,模块与模块之间的耦合度低,更有利于维护,当你写的代码越来越多就知道重要性了。

@dongdong @chaos1001 @konami1986
設計模式的利點我懂,儘管我只是為了能少寫點代碼,才開始學設計模式。現在看來經驗值不足就是自身最大的問題,謝謝。
乖乖寫代碼去。

喜欢 jsp,做个小站http://www.quzhuanpan.com

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册