位置: 编程技术 - 正文

PHP设计模式之观察者模式实例(php设计原则)

编辑:rootadmin

推荐整理分享PHP设计模式之观察者模式实例(php设计原则),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php设计思路,php 设计模式 鸟哥,php常见设计模式和用途,php常见设计模式和用途,php设计模式及使用场景,php23种设计模式,php设计模式及使用场景,php设计模式六大原则,内容如对您有帮助,希望把文章链接给更多的朋友!

首先了解观察者模式的概念:一个对象通过添加一个方法(该方法允许另一个对象,即观察者 注册自己)使本身变得可观察。当可观察的对象更改时,它会将消息发送到已注册的观察者。这些观察者使用该信息执行的操作与可观察的对象无关。结果是对象可以相互对话,而不必了解原因。观察者模式是一种事件系统,意味着这一模式允许某个类观察另一个类的状态,当被观察的类状态发生改变的时候,观察类可以收到通知并且做出相应的动作;观察者模式为您提供了避免组件之间紧密耦。

UML结构图:

观察者模式解决的问题

在我们的开发过程中,应该都或多或少的碰到过改动其中一部分代码会引起其他一连串改变的问题,显然想要完全避免这种情况不太可能,但我们也应答尽量减少对其他组件的依赖,而观察者模式就是为了解决这个问题。

举个例子来说,我们有一个帖子对象,代码如下:

在上面是一个普通的帖子对象,随着发帖量和访问量越来越大,运营们开始不干了,公司也经常会接到投诉电话,说我们的网站有许多敏感内容和垃圾广告,因此我们需要做内容审核:首先是对用户的审核,一些黑名单用户应该被禁止发帖;二是对IP的审核;三是对内容敏感词的审核。因此我们的代码就成了如下的样子:

PHP设计模式之观察者模式实例(php设计原则)

随着需要审核的字段越来越多,addPost方法变得越来越长,发布对象被也只能紧紧的被嵌入到该系统中。

观察者模式的实现

观察者模式的核心是把观察者从主体中分离开来,当主体知道事件发生时,观察需要被通知到,同时我们也不想把主体和观察者之间的关系写死,于是我们来修改下我们上面的代码:

通过上面的代码,我们可以再很容易的加入审核规则。

SPL代码

观察者模式是一个很常见和常用的设计模式,以至于SPL扩展已经为我们封装好了对应的类和方法,下面的代码是根据SPL提供的3个元素:SplObserver,SplSubject,SplObjectStorage来实现的代码

很简单吧,最重要的是理解,在这个例子中,我们把一些审核的方法从帖子类中剥离了开来,而且该帖子对象也可以用来作为其他的发布类型。

以上内容实现是小编给大家介绍的PHP设计模式之观察者模式,希望对大家有所帮助!

PHP实现linux命令tail -f tail命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail-ffilename会把filename里最尾部的内容显示在屏幕上,

PHP编写RESTful接口 首先我们来认识下RESTfulRestful是一种设计风格而不是标准,比如一个接口原本是这样的:

phalcon框架使用指南 初次认识phalcon是在刚学php的时候,最近终于有机会用上了.故此说说使用上的一些感受个人是很喜欢phalcon这套框架的方式,使用依赖注入,让代码组织很灵

标签: php设计原则

本文链接地址:https://www.jiuchutong.com/biancheng/289854.html 转载请保留说明!

上一篇:PHP编写RESTful接口的方法(php rest api)

下一篇:PHP实现linux命令tail -f(php执行linux脚本)

  • 企业所得税年报申报时间
  • 房地产开发企业资质等级有几个
  • 企业所得税怎么算出来
  • 融资租赁印花税怎么交
  • 个人独资企业怎么取钱
  • 年报资金数额要怎样填
  • 购入不动产进项税额抵扣
  • 企业所得税季报营业收入,营业成本怎么填
  • 销售净水器营业执照范围
  • 出口企业免抵税额要作进项转出吗
  • 开票金额比实际金额多
  • 甲公司存货采用实际成本法核算
  • 结转损益类费用科目的余额
  • 通行费进项抵扣政策
  • 购买的二手车可以抵扣进项税额吗
  • 会计凭证可分为哪三类
  • 公司拍摄产品的文案
  • 两个单位同一个法人
  • 全额拨款事业单位工资都一样吗
  • 收入纳税明细怎么打印
  • 一般纳税人所说的税率是
  • 管家婆已过账销售单如何删除
  • 餐饮服务行业会计分析
  • 增值税附加税怎么计提
  • 暂估应付账款是什么科目
  • 生产车间折旧为0的原因
  • 免税出口样品收多少税
  • windows server 2003 r2 序列号
  • 在win7系统中将打开窗口拖到屏幕顶端
  • 贷款房屋评估费用
  • 票据贴现融资有哪些潜在的风险
  • PHP:Memcached::decrement()的用法_Memcached类
  • 非累积带薪缺勤什么时候确认
  • 公益慈善事业捐赠个人所得税
  • 怎么租一个月
  • php正则函数内容匹配
  • PHP:zip_entry_read()的用法_Zip函数
  • 代销方式是什么意思
  • 会计学中借和贷怎么区分
  • 新企业所得税税前扣除政策
  • 进项税额转出会计分录
  • 固定资产一次性扣除如何做账
  • 进项税额已抵扣转出会计分录
  • 车间领用材料应编制什么凭证
  • python 脚本编写
  • 房地产公司土地计入什么科目
  • 帝国cms模型
  • hashmap的使用场景
  • 固定资产二级科目装修
  • 合伙企业所得税征收方式
  • 小企业长期股权投资减值损失采用直接转销法
  • 发出存货的计价应当采用
  • 小规模纳税人企业所得税税率
  • 费用报销单如何粘贴票据
  • 外币应收账款汇兑损失计入财务费用吗
  • 金蝶的数量金额明细账是怎么做的
  • 贷款指标是什么意思
  • 工程费用科目
  • 收到专票可以不签字吗
  • 可供出售金融资产属于什么科目
  • mysql注入语句
  • sql server中一个数据库可以有多个文件组
  • 数据转换常见策略
  • 远程连接局域网内的电脑
  • Linq to SQL 插入数据时的一个问题
  • mac链接其他屏幕
  • windows7可以打开多个窗口
  • centos6.10安装
  • win8使用教程和技能
  • 深入理解关于教育两个大计
  • jquery获取数据
  • 批量压缩命令
  • unity3d shader之Julia集和Mandelbrot集绘制美丽图案 (二)
  • linux .tar文件
  • adb命令ls
  • 国家税务总局现任局长
  • 国税新人什么时候入职
  • 注册财税公司需要什么条件
  • 自然人电子税务局怎么设置申报密码
  • 物流公司怎么申请TIR
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设