設計模式在面試過程中經常會提到,有時候還會讓我們舉例說明各種設計模式的應用場景。
使用設計模式可以減輕我們的工作量,優化我們的**。
設計模式非常的多,這裡介紹單例模式,工廠模式,組合模式,策略模式4種模式
如果有**有什麼問題或者有更好的方式請告知,謝謝!!!!!
/*** 單例模式
* @author yangyang <[email protected]>
* 可以想成在一次http請求中只產生該類的乙個物件(即只new classname一次)
* 經典的例子是資料庫連線(redis,mongodb,memcache等)
* 在一次http請求中我們可能需要對資料庫做增刪改查多條sql操作
* 但是如果一次http請求中每執行一條sql我們就m很明顯會導致伺服器資源的浪費
* 為了節約資源,就可以通過單例模式來實現一次http請求只做一次mysql_connect()
* 即將mysql_connect()放在類方法的__construct中,並將__construct方法做成私有,
* 這樣只能通過getinstance()方法來獲得mysql_connect()的資源連線符
* getinstance()方法中判斷是否已經存在myql連線符,如果存在就直接返回該連線符
* 否則new classname()即呼叫了__construct方法執行了mysql_connect()得到了資源連線符,並返回連線符
* 因為現在php已不再建議直接使用mysql函式進行資料庫操作,而是建議通過pdo進行資料庫操作,所以這裡寫乙個簡易pdo連線的單例模式
* 這裡只是講解單例原理,資料庫的防sql注入等問題不做考慮
* 準備工作 資料庫:test 資料表:user 字段:id name 記錄:1 codeanti
* 最終執行結果: 資料表user中id=1這條記錄被刪除
*/class singlepdo
catch(pdoexception $e)");}}
//私有,防止轉殖
private function __clone(){}
//獲取連線實程式設計客棧例
public statiwww.cppcns.comc function getinstance($dsn,$dbuser,$dbpassword)
//執行sql
public function 程式設計客棧execsql($sql)
}$dsn = "mysql:host=localhost;dbname=test";
$dbuser = "root";
$dbpassword = "";
$sql = "delete from user where id = 1";
$pdo = singlepdo::getinstance($dsn,$dbuser,$dbpassword);
$result = $pdo->execsql($sql); //$pdo->execsql($sql)多次呼叫,但仍然是同乙個pdo物件
print_r($result);
本文標題: php經典面試題之設計模式(經常遇到)
本文位址:
PHP面試題之設計模式
設計模式是技術面試的時候難免會被問到的乙個問題,特別會讓你舉例說明各種設計模式的使用場景。使用設計模式可以減輕我們的工作量,優化我們的 設計模式非常的多,這裡介紹單例模式,工廠模式,組合模式,策略模式4種模式 如果有 有什麼問題或者有更好的方式請告知,謝謝 單例模式 author yangyang ...
php經典面試題
functiongbk strrev str if ord char 127 elseelseif ord first b 192 elseelseelseif ord first b 192 elseelseelsereturn arr arr array 12,78,49,68,59,67,93...
設計模式之相關面試題
1 請使用uml類圖畫出原型模式核心角色 2 原型設計模式的深拷貝和淺拷貝是什麼,並寫出深拷貝的兩種方式的原始碼 重寫clone方法實現深拷貝 使用序列化來實現深拷貝 3 在spring框架中 使用到原型模式,並對原始碼進行分析 beans.xml 4 spring中原型bean的建立,就是原型模式...