Yii 中使用了哪些設計模式?
阿新 • • 發佈:2018-11-07
單例模式
public function set($class, $definition = [], array $params = []) { // 規範化 $definition 並寫入 $_definitions[$class] $this->_definitions[$class] = $this->normalizeDefinition($class, $definition); // 將建構函式引數寫入 $_params[$class] $this->_params[$class] = $params; // 刪除$_singletons[$class] unset($this->_singletons[$class]); return $this; } public function setSingleton($class, $definition = [], array $params = []) { // 規範化 $definition 並寫入 $_definitions[$class] $this->_definitions[$class] = $this->normalizeDefinition($class, $definition); // 將建構函式引數寫入 $_params[$class] $this->_params[$class] = $params; // 將$_singleton[$class]置為null,表示還未例項化 $this->_singletons[$class] = null; return $this; }
抽象工廠模式(Abstract Factory)
工廠方法模式(Factory Method)
迭代器模式(Iterator)
class SessionIterator implements \Iterator
MVC模式
MVC是三個單詞的縮寫:Model, View, Controller。 MVC是一種設計模式,目前幾乎所有的Web開發框架都建立在MVC模式之上。
依賴注入(Dependency Injection)模式
http://www.yiichina.com/tutorial/112
介面卡模式(Adapter)
介面卡模式的優點既沒有修改原來的類,又擴充套件了原來的類, 複用了現存的類,解決了現存類和複用環境要求不一致的問題。
建造者模式(Builder)
建造者模式也稱生成器模式,核心思想是將一個複雜物件的構造與它的表示分離,使同樣的構建過程可以建立不同的表示。
$config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/../../common/config/main.php'), require(__DIR__ . '/../../common/config/main-local.php'), require(__DIR__ . '/../config/main.php'), require(__DIR__ . '/../config/main-local.php') ); $application = new yii\web\Application($config); $application->run();
yii\web\Application
類使用了建造者模式,我們不用逐一去配置應用程式的每個配置項,通過yii\helpers\ArrayHelper::merge
將所有的配置項合併到一起統一配置。
組合模式(Composite)
裝飾模式(Decorator)
代理模式(Proxy)
外觀模式(Facade)
觀察者模式(Observer)
狀態模式(State)
模板方法模式(Template Method)
策略模式(Strategy)
享元模式(Flyweight)
Yii2 中高階版本(Advanced)有三個入口(frontend, backend, console),三個入口的應用程式類(Application)都繼承同一個yii\base\Application
類,這樣它們共享同一個 common
目錄。
參考文獻: