设计模式
-
实践GoF的23种设计模式:观察者模式
摘要:当你需要监听某个状态的变更,且在状态变更时通知到监听者,用观察者模式吧。 本文分享自华为云社区《【Go实现】实践GoF的23种设计模式:观察者模式》,作者: 元闰子 。 简介 现在有 2 个服务,Service A 和 Service B,通过 REST 接口通信;Service A 在某个业务场景下调用 Service B 的接口完成一个计算密集型任…
-
设计模式——单例模式
引言 今天来谈谈设计模式中的单例模式,温故知新,以免生疏。 软件设计领域的四位世界级大师Gang Of Four (GoF):Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides四人合著了《Design Patterns – Elements of Reusable Object-Oriented…
-
设计模式之一单一职责原则(东方化)
——————————-上帝创造出的生灵有美有丑———————————— 外文:There should never be more than one reason for a class to change 这句话是单一职责原则的原始定义(单一职责原则的英文名称是Sing…
-
面向对象设计原则和模式
面向对象设计原则 开放封闭原则: 一个软件实体如类、模块和函数应该对拓展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。 里氏替换原则: 所有引用的父类的地方必须能透明的使用其子类的对象 依赖倒置原则: 高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象;即针对接口编程,而不是针对实现编程 …
-
设计模式 | 观察者模式/发布-订阅模式(observer/publish-subscribe)
定义: 定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。 结构:(书中图,侵删) 一个抽象的观察者接口,拥有一个更新方法 若干个具体的观察者类 一个抽象的subject类,包含一个抽象观察者的集合,并拥有增加、删除观察者的方法,以及一个通知的方法 若干个具体sub…
-
Java设计模式之观察者模式(生产者与消费者模式)
生活中我们经常遇到观察者模式的案例。 例如,我们去商场购物,注册了一家店的会员,一旦这家店有活动,你的手机就会收到一些推送消息,是不是? 在例如,我们看某个电视台的节目,这个电视台放什么节目我们就会看到什么节目。 这些都是典型的生产者与消费者的案例。 所谓的观察者模式,定义了一种一对多的依赖关系,能够让多个观察者订阅某个主题,当这个主题发生变化的时候,主…
-
(原创)无废话C#设计模式之十八:Command
无废话C#设计模式之十八:Command 意图 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 场景 我们知道,网络游戏中的客户端需要不断把当前人物的信息发送到游戏服务端进行处理(计算合法性、保存状态到数据库等)。假设有这样一种需求,在服务端收…
-
(原创)无废话C#设计模式之二十:Mediator
无废话C#设计模式之二十:Mediator 意图 用一个中介对象来封装一系列对象的交互。中介者使得各对象不需要显式相互引用,从而使其松散耦合,而且可以独立地改变它们之间的交互。 场景 我们知道,一个网络游戏往往有很多大区。每一个大区可以是一组服务器,也可以是多组服务器,在这里假设一个大区是一组服务器。为了效率,一般每个大区都…
-
(原创)无废话C#设计模式之十五:Strategy
无废话C#设计模式之十五:Strategy 意图 定义一系列的算法,把它们一个一个封装起来,并且使它们可相互替换。本模式使得算法可以独立于它的客户而变化。 场景 在开发程序的时候,我们经常会根据环境不同采取不同的算法对对象进行处理。比如,在一个新闻列表页面需要显示所有新闻,而在一个新闻搜索页面需要根据搜索关键词…
-
(原创)无废话C#设计模式之十九:Observer
无废话C#设计模式之十九:Observer 意图 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。 场景 这次不说游戏了,假设我们需要在一个Web页面上分页显示数据。首先需要一个分页控制器和一个显示数据的表格。开始,客户的需求很简单,需要两个向前翻页向后翻页的按钮作为…