PHP經典面試題之設計模式 經常遇到

2022-10-06 10:24:10 字數 1564 閱讀 1707

設計模式在面試過程中經常會提到,有時候還會讓我們舉例說明各種設計模式的應用場景。

使用設計模式可以減輕我們的工作量,優化我們的**。

設計模式非常的多,這裡介紹單例模式,工廠模式,組合模式,策略模式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的建立,就是原型模式...