• PHP 事件模型 在项目中的应用


    先看下以下数字:

    google 以下关键字结果:

    js 事件模型

    as3 事件模型 :找到约 168,000 条结果

     

    JAVA事件模型:

     

    C++ event model

    在搜索下PHP的事件模型,相差甚远

    看完上面的数据后,你可能会想,事件机制在PHP真的不那么重要,对于这个重要的问题,或许通过下面的问题你可以直接得出个结论

    假设 A B 在同时开发一个项目(或者更多人在同时开发)

    根据MVC架构,先开始写的该是M,A在写一个MODEL,而B在写另一个MODEL

    经常会有一个问题,就是MODEL之间的相关性,当A写的MODEL有一个操作,这个操作会影响到B的MODEL

    第一个反应,就是在A写的MODEL调用B写的MODEL,这样两个类之间的耦合度就非常大了.

    那就第二个反应,建立一个观察者模式,在CONTROLLER里把B的MODEL传进来,如果单纯的传B进来,会引起另一个问题,

    当A写的MODEL里触发那个操作的那个方法的传入参数或者那个方法里的局部变量是在B写的MODEL里的观察方法里得是不到的,除非你专门把这些局部变量都变为类的一个属性来传递这个值,这样当你的这类要通知给外面很多事情的方法增加的时候,你会发现你的写的东西变的不可维护

    最后一个我能想到的,就是引入事件模型,让所有要对外有通知的类都继承自事件基类,这样可以非常完美的解决这个问题.

    具体的事件模型实现请参阅我的上一篇文章:http://www.cnblogs.com/liushannet/archive/2011/03/22/1991551.html(整个实现思路照搬AS3中的部分实现,非原创)

    遇到大项目时候,类之间的耦合度可以很好的解决,只要定义好每个方法里都会触发那些事件,几乎可以让每个独立开发,而不用考虑代码之间会调用性问题

    其实这个东西很多人在自己的项目中已经有实际的应用,但很多人却没把他当回事,因为他们已经习惯了,但对于刚进行第一次项目规划的人来说,这些东西还是挺重要的,毕竟我就吃过这亏,

  • 相关阅读:
    30 Day Challenge Day 20 | Leetcode 938. Range Sum of BST
    30 Day Challenge Day 20 | Leetcode 124. Binary Tree Maximum Path Sum
    30 Day Challenge Day 20 | Leetcode 94. Binary Tree Inorder Traversal
    idea2019版本破解
    xml文件时第一行无缘无故报错
    activeMQ的基本使用
    activeMQ的安装(Linux下)
    redis的基本用法
    redis安装(Linux下)
    redis安装(window下)
  • 原文地址:https://www.cnblogs.com/liushannet/p/2021869.html
Copyright © 2020-2023  润新知