設計模式是技術面試的時候難免會被問到的乙個問題,特別會讓你舉例說明各種設計模式的使用場景。
使用設計模式可以減輕我們的工作量,優化我們的**。
設計模式非常的多,這裡介紹單例模式,工廠模式,組合模式,策略模式4種模式
如果有**有什麼問題或者有更好的方式請告知,謝謝!!!!!
/** * 單例模式
* @author yangyang <[email protected]>
* 可以想成在一次http請求中只產生該類的乙個物件(即只new classname一次)
* 經典的例子是資料庫連線(redis,mongodb,memcache等)
* 在一次http請求中我們可能需要對資料庫做增刪改查多條sql操作
* 但是如果一次http請求中每執行一條sql我們就mysql_connect(),很明顯會導致伺服器資源的浪費
* 為了節約資源,就可以通過單例模式來實現一次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
static
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);
設計模式之相關面試題
1 請使用uml類圖畫出原型模式核心角色 2 原型設計模式的深拷貝和淺拷貝是什麼,並寫出深拷貝的兩種方式的原始碼 重寫clone方法實現深拷貝 使用序列化來實現深拷貝 3 在spring框架中 使用到原型模式,並對原始碼進行分析 beans.xml 4 spring中原型bean的建立,就是原型模式...
PHP經典面試題之設計模式 經常遇到
設計模式在面試過程中經常會提到,有時候還會讓我們舉例說明各種設計模式的應用場景。使用設計模式可以減輕我們的工作量,優化我們的 設計模式非常的多,這裡介紹單例模式,工廠模式,組合模式,策略模式4種模式 如果有 有什麼問題或者有更好的方式請告知,謝謝 單例模式 author yangyang 18122...
設計模式面試題
參考 常用的設計模式彙總,超詳細!這個模式本身很簡單而且使用在業務較簡單的情況下。一般用於小專案或者具體產品很少擴充套件的情況 這樣工廠類才不用經常更改 它由三種角色組成 來用類圖來清晰的表示下的它們之間的關係 抽象工廠模式 先來認識下什麼是產品族 位於不同產品等級結構中,功能相關聯的產品組成的家族...