Yii2设计模式——Yii2中用到哪些设计模式?
”yii2设计模式“包含了两个方面的内容:1.设计模式,2.yii2框架。
《设计模式》一书虽然以java语言来表达设计模式的思想,但是设计模式远不限制于某一种特定的语言,而是在面向对象编程中通用的思想,各个语言也都有各自的实现方式。
yii2是一款优秀的php web框架,yii2框架的里里外外都借鉴了很多设计模式的思想。而且,越是yii2内核的部分,设计模式运用的越多。同样的,其他优秀的框架如symphony2/laravel也是如此,学习yii2的设计模式,无疑对认识其他框架,对提高自己编码能力,加深对软件设计的认识都非常有帮助。
yii2设计模式,集中体现在依赖注入(di),服务定位器(service locator),数据库(db),缓存(cache),请求(request),响应(response)等核心组件上。
php设计模式
根据使用目的设计模式一般可为分为三类:
- 创建型模式(creational patterns)
- 结构型模式(structural patterns)
- 行为型模式(behavioral patterns)
具体都有哪些,网上资料随便一搜便出来了,笔者在这里不再列出来。
《设计模式》提到的23中经典设计模式,php都有自己实现的方式,其中有些模式用的并不多,此外php中还有别的一些常用的模式,它们都有:
依赖注入模式(dependencyinjection)
服务定位器模式(servicelocator)
mvc模式
对象池模式(pool)
数据访问对象模式(dao)
流接口模式(fluent interface)
规约模式(specification)
委托模式(delegation)
-
repository模式
...
yii2设计模式
经笔者的归纳,yii2用到的设计模式主要由下面的这些,根据类型可归纳为:
创建型
- 单例(singleton)
- 工厂方法(factorymethod)
- 抽象工厂(abstractfactory)
- 建造者(builder)
- 原型(prototype)
- 对象池(pool)
行为型
- 观察者(observer)
- 策略(strategy)
- 模板方法(templatemethod)
- 迭代器(iterator)
结构型
- 组合(composite)
- 适配器(adaptor)
- 桥接(bridge)
- 装饰器(decorator)
- 外观(facade)
- 依赖注入(dependencyinjection)
- 流接口模式(fluent interface)
- 数据访问对象模式(dao)
其他
- 服务定位器(servicelocater)
- mvc
- 委托模式(delegation)
yii2中设计模式,有些并不严格遵循《设计模式》中标准的定义和使用方法,甚至有时会表现出很大的差异性。但好在“形散而神不散”,细节虽偶有不同而精髓却是一样的。笔者将会帮助读者发现这些”隐藏极深“的使用技巧。
虽然笔者聊的对象是yii2框架,然而实际目的是使大家熟悉设计模式,顺带的再聊下六大设计原则。最终的目的是提升大家在实际编码中的能力。
最后,给大家推荐一个好的开源项目designpatternsphp,对php所有常用的模式都有介绍和源码。另外,笔者自己的开源项目 也介绍了php常用的设计模式,大家都可结合着学习下。