Yii 中使用了哪些设计模式? [ 技术分享 ]
单例模式
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
目录。
责任链模式(Chain of Responsibility)
共 10 条回复
╃巡洋艦㊣ 北京
注册时间:2010-11-21
最后登录:1小时前
在线时长:1674小时21分
最后登录:1小时前
在线时长:1674小时21分
- 粉丝1369
- 金钱76388
- 威望845
- 积分101578