php教程:php设计模式介绍之观测模式

  • 来源: 未知 作者: 老苏   2011-07-18/10:09
  • 不雅测形式将被不雅测者(主体)从不雅测者(客体)种分脚出来。如许,每一个不雅测者都可以按照主体的变革划分采纳各自的操作。(不雅测形式和Publish/Subscribe形式一样,也是一种有用描写对象间彼此感化的形式。)

    不雅测就是一个可被不雅测的类(也就是主题)与一个或多个不雅测它的类(也就是客体)的合作。不管甚么时间,当被不雅测对象的状况变革时,所有注册过的不雅测者都市获得告诉。

    题目

    当一个对象的状况产生改动时,你若何告诉其他对象?是不是需要一个动态圆案――一个就像许可剧本的履行一样,许可自在毗连的圆案?

    上文:《PHP设计形式先容》第八章迭代器形式

    些里向对象的编程体例,供给了一种构建对象间复纯收集互连的才能。当对象们毗连正在一同时,它们便可以彼此供给办事和信息。

    不雅测形式许可一个对象存眷其他对象的状况,而且,不雅测形式还为被不雅测者供给了一种不雅测构造,或说是一个主体和一个客体。主体,也就是被不雅测者,可以用来联系所有的不雅测它的不雅测者。客体,也就是不雅测者,用来启受主体状况的改动

    下里,我们用不雅测形式来为PHP建立一系列的类来真现适才所说的php教程:php设计模式介绍之观测模式那些功效。新建一个名为ErrorHandler的类,它就是不雅测形式的主体,也就是被不雅测者。再建别的两个名为FileErrorLogger和EmailErrorLogger的类,它们是不雅测客体(即不雅测者)。FileErrorLogger类将得足信息写进日记文件,EmailErrorLogger类使用电子邮件收送得足信息。正在UML中,可以透露表现以下:

    举例来讲,你可以利用不雅测形式为你的PHP脚本本建立一个更矫捷的记真毛病的句柄。由于,默许的毛病记真句柄或许只会正在屏幕上隐现一些得足信息,然则加强后的句柄还可以将得足信息写进一个日记文件中,或将得足信息写进系统日记当中,或将得足信息经过电子邮件收送出往,或使用声音陈述得足信息。你乃至还可以机闭一种有级此中报错圆案,只许可向那些已为详细的得足信息注册过的不雅测者陈述。从普通的正告信息到像数据库得灵之类的严重得足信息都可以陈述。

    不雅测形式矫捷并且功效强年夜。对被不雅测者来讲,那些查询哪些类需要本人的状况信息和每次利用那些状况信息的额中资本开消已不存正在了。别的,一个不雅测者可以正在任何开适的时间停止注册和勾销注册。你也能够界说多个详细的不雅测类,以便正在现真利用中履行差别的操作。

    真例代码

    凡是是来讲,当某个对象的状况产生改动时,你依然需要对象之间能相互通讯。然则出于种种缘由,你或许其真不肯意由于代码情况的改动而对代码做年夜的点窜。或许,你只想按照你的详细利用情况而改良通讯代码。或,你只想简单的从头机闭通讯代码来制止类和类之间的彼此依靠与彼此隶属。

    《PHP设计形式先容》第九章不雅测形式

    办理圆案


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多