位置: 编程技术 - 正文

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脚本)

  • 其他负债是流动负债还是非流动负债
  • 其他应收款期末余额为负数是什么意思
  • 研发费用辅助账是什么意思
  • 农产进项税是多少税率
  • 不在经营范围内开票会受到什么惩罚
  • 申报过后财务报告怎么查
  • 跨地区经营企业代码表从哪里找
  • 库存商品的进销存怎么做账
  • 加工费的计提工资账务处理
  • 三栏式和多栏式的账目有哪些
  • 设备安装成本如何核算
  • 汇算清缴之后报销去年的票如何分录?
  • 行政单位举办活动能发奖奖金吗
  • 增值税普通发票可以抵扣吗
  • 增值税税负率税率怎么算
  • 2016年红冲发票流程
  • 关于旅行社代订的通知
  • 财务软件没有税务登记
  • 房地产开发企业的土地使用权计入哪里
  • 必要报酬率的计算公式Rm
  • 经办人需要承担风险盘锦交通运输破坏营商环境
  • 少付的运费如何做分录
  • 货币资金怎么核对账实相符
  • 生产成本期末余额在贷方
  • win10系统怎么设置锁屏壁纸
  • 加工费计入成本怎么计算所得税
  • 收到收据的会计分录
  • 档案保管期限是写汉字吗?
  • 支付中间业务收入怎么算
  • 如何知道家里网络是多少兆
  • 外购固定资产的税率
  • CodeIgniter与PHP5.6的兼容问题
  • 密歇根湖怎么读
  • 员工出差过程中猝死赔偿
  • yolo 官网
  • 微服务架构java框架
  • 先预付货款,货到了怎么做账
  • 税局 不负责任
  • vue错误处理
  • 占统治地位的英文短语
  • 微信小程序在哪里找?
  • ubuntu端口不能远程访问
  • 出口货物退货会退税吗
  • 商品咨询服务包含什么
  • 运输发票必须附票吗
  • 织梦官方网站
  • phpcms二次开发教程
  • 企业所得税季报人数季度初值
  • 企业常用会计科目表及其解释
  • 小规模纳税人零税率怎么申报
  • 工程施工人工费,材料费,机械费占多少比例
  • 个人补缴的医保有钱返吗
  • 可抵扣进项税额包括进项税额转出吗
  • 协会申报材料
  • 将自产的产品用于非应税项目
  • 绿化工程苗木成活率交工标准
  • 合同权利义务包含债务吗
  • 事业单位职工福利费计提标准和使用
  • 个人怎么缴纳五险一金
  • 其他货币资金的核算业务怎样处理
  • win8系统无线网找不到
  • windows xp升级为windows 7
  • macbook存东西一般存在哪
  • 在microsoft store
  • windows7回收站图标没了
  • win10系统光驱
  • windows 8虚拟机
  • 体验Win8灵活分屏贴靠功能图文介绍
  • 铁嘴李林
  • jquery的show和hide
  • unity3D游戏开发
  • 批处理for命令修改后缀名
  • mysql数据表复制
  • ExpandableListView 实现分组购物车
  • jquery动态添加和删除div
  • 网络发票管理系统
  • 江苏国税电子税务局网上申报流程
  • 什么是税务证书密码
  • 出成效的意思
  • 土增税税负率一般多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设