【Linux服务器开发】1.5 发布订阅模式

1.观察者模式与发布订阅模式

1.1 概念

很相似,但是有区别,暂时不做区分.

定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(subject)的状态发生改变时,
所有依赖于它的对象都得到通知并自动更新。--《设计模式》

1.2 意义

(1)在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系”-> 一个对象(目标对象)的
状态发生改变,所有的依赖对象(观察者对象)都将得到通知.如果这样的依赖关系过于紧密,将使软件不
能很好地抵御变化.
(2)松耦合,使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系
结构的松耦合.

1.3 模型

分为推模型和拉模型.

1.3.1 推模型

目标对象主动向观察者推送目标的详细信息,不管观察者是否需要,推送的信息通常是目标对象的全部或
部分数据,相当于广播通信。

1.3.2 拉模型

目标对象在通知观察者的时候,只传递少量的信息。如果观察者需要更具体的信息,由观察者主动到目标
对象中获取,相当于是观察者从目标对象中拉数据。一般这种模型的实现中,会把目标对象通过update方
法传递给观察者,这样在观察者需要获取数据的时候,就可以通过这个引用来获取了.

1.3.3 实例理解

拉模型中也会存在推模型中的内容,只不过粒度很小,比如说在我们订阅一个公众号的时候,如果公众号
将它的内容全部推荐给我们,我们可以将其看做推模型.如果公众号仅仅将它的文章的标题推送给我们,
我们可以讲这个看作是拉模型中的小粒度推送,如果我们对公众号推送给我们的一个标题很感兴趣,我们
点开了文章,那么可以将其看做是拉模型中的客户端主动去拉取内容.

以上我们可以看到有如下的大致认同,
大粒度的推送--推模型中的推动作--服务器端
小粒度的推送--拉模型中的推动作--服务器端
拉取推送内容--拉模型中的拉动作--客户端

1.4 代码的简单演示

2.工厂模式

2.1 什么是工厂模式

2.5 OCP(开发封闭原则)

定义
​开闭原则,英文缩写OCP,全称Open Closed Principle。
原始定义:Software entities (classes, modules, functions) should be open for extension but 
closed for modification。
字面翻译:软件实体(包括类、模块、功能等)应该对扩展开放,但是对修改关闭。

为什么要“开”和“闭”
一般情况,我们接到需求变更的通知,通常方式可能就是修改模块的源代码,然而修改已经存在的源代码是存在
很大风险的,尤其是项目上线运行一段时间后,开发人员发生变化,这种风险可能就更大。所以,为了避免这种
风险,在面对需求变更时,我们一般不修改源代码,即所谓的对修改关闭。不允许修改源代码,我们如何应对需
求变更呢?答案就是我们下面要说的对扩展开放.

通过扩展去应对需求变化,就要求我们必须要面向接口编程,或者说面向抽象编程。所有参数类型、引用传递的
对象必须使用抽象(接口或者抽象类)的方式定义,不能使用实现类的方式定义;通过抽象去界定扩展,比如我
们定义了一个接口A的参数,那么我们的扩展只能是接口A的实现类。总的来说,开闭原则提高系统的可维护性和
代码的重用性.

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值