【问题标题】:Design Patterns used in Zend Framework [closed]Zend 框架中使用的设计模式
【发布时间】:2010-11-12 09:56:11
【问题描述】:

我正在准备谈论Zend Framework的一般架构,并想总结其中使用的设计模式。

我相信这对那些知道ZF和学习DPs的人,以及那些知道DPs和学习ZF的人都是有益的。在前一种情况下,人们将能够看到模式的现实世界应用,并在第二种情况下更好地理解框架。

即使是Zend_Contoller_Front: Singleton 形式的简短回答也足够好,如果提供一点详细说明(对于一些不太明显的情况)会更好。

我主要对GoF 模式感兴趣,因为它们似乎是任何 DP 冒险的起点。

UPD: 不直接相关,但对于知道Java 的人来说,GoFDP 示例在Java 核心中找到extremely complete answer

【问题讨论】:

  • 他们确实使用了很多单例和注册表模式,我告诉你很多
  • 所以基本上,您是在要求我们准备您的演讲?另外,您知道其中也有很多来自 POEAA 的模式,是吗? MVC、TDG、RDG、FrontController等。ZF基本都在渗DP。
  • 为什么是近距离投票?在最大的 PHP 框架之一中使用模式并不是“过于本地化”。
  • Gordon:我不要求你准备我的演讲——我要求社区帮助识别模式,因为 ZF 是一个巨大的项目,我肯定错过了很多。你真的相信谈话可以包括列表组件 - 模式(我说过,即使是简短的答案对我也有好处)。
  • @Gordon 谢谢!不知道我可以标记帖子 - 现在做了,以便版主可以决定是否值得将问题转为 CW。

标签: php oop design-patterns zend-framework


【解决方案1】:

由于这是一个 CW,我将添加我已经在 cmets 中给出的模式:

  • Zend_Controller_Front
    • Singleton
    • FrontController
  • Zend_Db_Table
    • Table Data Gateway
  • Zend_Log
    • Factory Method
    • Adapter
    • Composite
  • Zend_Form
    • Composite
    • Decorators
  • Zend_FilterZend_Validator
    • Strategy

【讨论】:

    【解决方案2】:

    命名一些模式:

    • Zend_Controller_Front (index.php + .htaccess) 中的前端控制器模式
    • Zend_Registry 中的注册表模式
    • Zend_Application_Bootstrap_Bootstrap 的容器中的依赖注入
    • 单例(grep getInstance
    • Zend_Form 的验证器中的策略模式
    • Zend_Form 的装饰器中的装饰器模式
    • | grep adapter 中的适配器模式

    文件和方法名称很明显,所以grep 是你的朋友。

    有志愿者编辑并提供链接和示例代码吗?

    【讨论】:

      【解决方案3】:

      提供一个我想要的样本,并帮助那些怀疑我要求别人做我的工作的人更好地评估这个问题的答案是否对其他人有帮助(无论是尝试学习 DPs 还是 ZF) ,这里是示例:

      工厂方法模式:

      • 在很多情况下都使用了所谓的简单工厂,并且没有一个地方实现了成熟的工厂方法模式(如 GoF 所述)。
      • 简单工厂的示例包括 Zend_Cache、Zend_Db、Zend_Log

      【讨论】:

        【解决方案4】:

        为了完整起见,应该注意 Zend_Form 使用了一种修改后的装饰器模式。在 Zend_Form 中,生成的内容是修饰的,而不是对象本身。

        来源:http://devzone.zend.com/1240/decorators-with-zend_form/

        【讨论】:

          猜你喜欢
          • 2011-11-30
          • 2012-03-06
          • 2012-03-07
          • 2010-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-19
          相关资源
          最近更新 更多