標籤:特定 factor mysq use nts pac ase fence get
原廠模式
/** * Factory 方法或者類產生對象,而不是在代碼中直接new * * 修改類名的時候,不需要每一個執行個體化語句都修改 * 只需要修改對應的Factory 方法 * * 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—常見設計模式