zoukankan      html  css  js  c++  java
  • 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所有常用的模式都有介绍和源码。另外,笔者自己的开源项目design-pattern 也介绍了PHP常用的设计模式,大家都可结合着学习下。

  • 相关阅读:
    GridView只显示日期问题
    自定义一个选择日期的用户控件
    母版页所带来的路径问题
    C#之旅(一): 泛型 和IComparable、IComparer
    使用HttpWebRequest来秒杀
    NameValueCollection Dictionary区别
    在C#中使用代理的方式触发事件 (委托和事件 )(二)(转)
    SQL2005语句实现行转列,列转行
    值类型和引用类型的区别?(转)
    2010年年终总结
  • 原文地址:https://www.cnblogs.com/minirice/p/10107178.html
Copyright © 2011-2022 走看看