zoukankan      html  css  js  c++  java
  • Yii2 设计模式——Yii2 中用到哪些设计模式?

    Yii 2 设计模式“包含了两个方面的内容:1. 设计模式,2. Yii 2 框架。

    《设计模式》一书虽然以JAVA语言来表达设计模式的思想,但是设计模式远不限制于某一种特定的语言,而是在面向对象编程中通用的思想,各个语言也都有各自的实现方式。

    Yii 2 是一款优秀的 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所有常用的模式都有介绍和源码。另外,笔者自己的开源项目 design-pattern 也介绍了 PHP 常用的设计模式,大家都可结合着学习下。

  • 相关阅读:
    python --(链表)
    Cocos Creator_继承组件单例
    JDK丨WIN10配置JDK1.8 (解决javac不是内部或外部命令,也不是可运行的程序或批处理文件)
    debug apk logCat
    JavaScript 当前URL取参返回字典
    Javascript扩展String.prototype实现格式金额、格式时间、字符串连接、计算长度、是否包含、日期计算等功能
    cocos2d JS 源生js实现each方法
    Cocos Creator 动态设置Canvas的宽度与高度,更改适配
    JavaScript 判断是PC端还是移动端
    cocos creator使用anysdk接入admob广告教程
  • 原文地址:https://www.cnblogs.com/echojson/p/10787504.html
Copyright © 2011-2022 走看看