摘要:
本文节选自《设计模式就该这样学》 1 使用访问者模式实现KPI考核的场景 每到年底,管理层就要开始评定员工一年的工作绩效,员工分为工程师和经理;管理层有CEO和CTO。那么CTO关注工程师的代码量、经理的新产品数量;CEO关注工程师的KPI、经理的KPI及新产品数量。 由于CEO和CTO对于不同的员 阅读全文
摘要:
本文节选自《设计模式就该这样学》 1 中介者模式的应用场景 在现实生活中,中介者的存在是不可缺少的,如果没有了中介者,我们就不能与远方的朋友进行交流。各个同事对象将会相互进行引用,如果每个对象都与多个对象进行交互,则会形成如下图所示的网状结构。 从上图可以看到,每个对象之间都过度耦合,这样既不利于信 阅读全文
摘要:
本文节选自《设计模式就该这样学》 1 使用备忘录模式实现草稿箱功能 大家都用过网页中的富文本编辑器,编辑器通常都会附带草稿箱、撤销等操作。下面用一段代码来实现一个这样的功能。假设,我们在GPer社区中发布一篇文章,文章编辑的过程需要花很长时间,中间也会不停地撤销、修改,甚至可能要花好几天才能写出一篇 阅读全文
摘要:
本文节选自《设计模式就该这样学》 1 命令模式的UML类图 命令模式的UML类图如下图所示。 2 使用命令模式重构播放器控制条 假如我们开发一个播放器,播放器有播放功能、拖动进度条功能、停止播放功能、暂停功能,我们在操作播放器的时候并不是直接调用播放器的方法,而是通过一个控制条去传达指令给播放器内核 阅读全文
摘要:
本文节选自《设计模式就该这样学》 1 使用解释器模式解析数学表达式 下面用解释器模式来实现一个数学表达式计算器,包含加、减、乘、除运算。 首先定义抽象表达式角色IArithmeticInterpreter接口。 public interface IArithmeticInterpreter { in 阅读全文
摘要:
本文节选自《设计模式就该这样学》 1 基于Java API实现通知机制 当小伙伴们在社区提问时,如果有设置指定用户回答,则对应的用户就会收到邮件通知,这就是观察者模式的一种应用场景。有些小伙伴可能会想到MQ、异步队列等,其实JDK本身就提供这样的API。我们用代码来还原这样一个应用场景,首先创建GP 阅读全文
摘要:
本文节选自《设计模式就该这样学》 1 状态模式的UML类图 状态模式的UML类图如下图所示。 2 使用状态模式实现登录状态自由切换 当我们在社区阅读文章时,如果觉得文章写得很好,我们就会评论、收藏两连发。如果处于登录情况下,则可以直接做评论、收藏这些行为。否则,跳转到登录界面,登录后再继续执行先前的 阅读全文
摘要:
本文节选自《设计模式就该这样学》 迭代器模式的UML类图如下图所示。 1 手写自定义的集合迭代器 总体来说,迭代器模式是非常简单的。还是以网络课程为例,我们创建一个课程集合,集合中的每一个元素都是课程对象,然后手写一个迭代器,将每一个课程对象的信息都读出来。首先创建集合元素课程Course类。 pu 阅读全文
摘要:
本文所有内容均节选自《设计模式就该这样学》 本文自2021年10月29日起持续连载,请大家持续关注.... 序言 Design Patterns: Elements of Reusable Object-Oriented Software(以下简称《设计模式》),一书由Erich Gamma、Ric 阅读全文
摘要:
本文节选自《设计模式就该这样学》 1 使用门面模式整合已知API的功能 一般的电商平台都是整合众多的子系统聚合到一起形成一个大型的购物平台,一般情况下,有很多现成的功能都不是重新开发的,而是要去对接已有的各个子系统,这些子系统可能涉及积分系统、支付系统、物流系统的接口调用。如果所有的接口调用全部由前 阅读全文