設計模式:工廠模式和單例模式

  在日常實用類的時候,每每要進行類功能的擴展,若是直接在裏面進行擴展,有可能會對類裏面的其餘功能產生影響,因此在擴展功能的時候就要從新寫類,這就要採用繼承的方式,如:服務器

 1 class YunSuan()
 2 {
 3        public $a;
 4        public $b;
 5        function Suan()  //造一個運算的方法
 6        {
 7        }  
 8 }
 9 class Jia extends YunSuan()   //造一個加的子類繼承父類
10 {
11        function Suan()   //重寫Suan的方法
12        {
13              return $this->a+$this->b;
14        }  
15 }

工廠模式:生產對象函數

  若是類裏面的方法名使用了很複雜的單詞命名,就會致使在使用類時必須將類裏面的方法名記住,這會在使用類的時候形成不便。採用工廠模式,經過某些特殊的符號來生產相應的類,就會使咱們在使用類的時候很方便,以下面一個工廠模式的類:this

 1 class gongchang    //造一個工廠模式的類
 2 {
 3       static function shengchan($ysf)  //定義一個生產對象的方法
 4       {
 5            //判斷每一個符號,並生產相應的類
 6             case "+":
 7                ruturn new Jia();
 8                break;
 9             case "_":
10                return new Jian();
11                break;
12       }
13 }

  造好裏以後,就能夠用相應的符號來生成相應的對象,來實現功能:spa

$jia  = gongchang::shengchan("+");
$jia->a = 5;
$jia->b = 10;
$jia->suan();

 

單例模式:code

在程序中,若是一個類來造了不少對象的話,就會致使服務器出問題,因此咱們要控制生成類的個數,這就要用到單例模式,控制每一個類只能造一個對象。對象

class DBDA
{
      public static $dx;    //存儲對象
      //將構造函數變成私有,避免外界訪問
      private function __contruct()
      {
      }
      //生成對象
      static function shengcheng()
      {
            if(empty(self::$dx))
            {
                   $dx = new DBDA();
            }
            return self::$dx;
      }
}
相關文章
相關標籤/搜索