PHP 常見得幾大設計模式

2021-09-18 09:08:00 字數 2663 閱讀 9423

**

一.單例模式

解釋:通俗的講就是保證系統只有這乙個類(唯一性)

要點:1.單例模式的類只提供私有的建構函式

2.建構函式和轉殖函式必須宣告為私有的,防止外部程式new類從而失去單 例模式的意義:

3.必須提供乙個訪問這個例項的公共的靜態方法(通常為getinstance方法),從而返回唯一例項的乙個引用

應用場景 :

1.鏈結資料庫

2.控制配置資訊

**示例:

class singlecase

private function __clone()

static public $instance;

//必須提供乙個訪問這個例項的公共的靜態方法,從而返回唯一例項的乙個引用

static public function getinstance()

return self::$instance;

} public function setname($name)

public function getname()

}$objecta = singlecase::getinstance();

$objectb = singlecase::getinstance();

$objecta->setname("subject");

$objectb->setname("title");

echo $objectb->getname();

echo $objecta->getname();

class factoryelse	}}

class course

}class video

}$ob =factory::getobject('course');

if(is_object($ob))else

三.觀察者模式

解釋:當乙個物件的狀態發生改變時,依賴他的物件會全部收到通知,並自動更新。

應用場景:

1.註冊及通知

2. 多個操作進行

3. 日誌錄入

**示例:

inte***ce  theme

inte***ce observer

class specifictheme implements themeelse

} public function notify()

} }}class userobserver implements observer

}class emailobserver implements observer

public function send()

}$specificthemeobj = new specifictheme();

$specificthemeobj->ob(new userobserver());

$specificthemeobj->ob(new emailobserver());

$specificthemeobj->notify();

四.適配模式

解釋:乙個類的介面轉換成外部希望的另外乙個介面,使用原本不相容的而不能在一起工作的那些類可以在一起工作.介面卡就是乙個把擁有相似功能但是介面名不同的類封裝成擁有同樣介面名的類,這樣只需要更改介面引入的類,但不需要改變類中的方法,就可以換成另乙個相同功能不同類名和方法名.

定義:target: 定義客戶端使用的特定領域介面(定義結論介面也就是父級介面)

clinet:與target協同類(定義子集類)

adpatee:定義乙個已經存在的介面(定義目標角色介面)

adpater:定義對應adpatee的介面卡

**示例:

/********* 開始   *********/

//定義父級介面 連線或斷開

inte***ce target

//定義第乙個子集類

class clinetone implements target

public function off()

}//定義第乙個子集類

class clinettwo implements target

public function off()

}// 第乙個目標角色介面

inte***ce adpateeone

//第二個目標角色介面

inte***ce adpateetwo

//定義第乙個介面卡

class adpaterone implements adpateeone

public function dolinks()

public function dooff()

}//定義第二個介面卡

class adpatertwo implements adpateetwo

public function doofflinks($type)else }}

/****** 完成*******/

class runadaptation

}$runadaptationobj = new runadaptation();

$runadaptationobj->run();

這篇文章有助於理解適配模式

命令模式、註冊樹模式、策略者模式等等

php常見的設計模式

單例模式 單例模式就是只允許類被例項化一次,且通過介面由類本身建立。同時單例模式不允許clone和new final class mysocket public static function getinstance return self instance 禁止物件的轉殖 private func...

設計模式幾大原則

談到設計模式,不能不說一下grasp 職責分配原則 這個比模式更重要.我將再後邊接著來分析.下面我來分析一下設計模式原則,以及在設計模式中的體現.主要參考 程杰 大話設計模組 這裡用dh代替 和justin tech 的部落格.一 設計模式的核心原則是 開 閉 原則 open closed prin...

設計模式幾大原則

談到設計模式,不能不說一下grasp 職責分配原則 這個比模式更重要.我將再後邊接著來分析.下面我來分析一下設計模式原則,以及在設計模式中的體現.主要參考 程杰 大話設計模組 這裡用dh代替 和justin tech 的部落格.一 設計模式的核心原則是 開 閉 原則 open closed prin...