PHP面試題之設計模式

2022-07-26 17:45:13 字數 1659 閱讀 6449

設計模式是技術面試的時候難免會被問到的乙個問題,特別會讓你舉例說明各種設計模式的使用場景。

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

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

設計模式面試題

參考 常用的設計模式彙總,超詳細!這個模式本身很簡單而且使用在業務較簡單的情況下。一般用於小專案或者具體產品很少擴充套件的情況 這樣工廠類才不用經常更改 它由三種角色組成 來用類圖來清晰的表示下的它們之間的關係 抽象工廠模式 先來認識下什麼是產品族 位於不同產品等級結構中,功能相關聯的產品組成的家族...