文章 2022-05-12 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-中介模式)

0x1、定义原始定义定义一个单独对象(中介)来封装一组对象间的交互,将这组对象间的交互委派给中介对象,来避免对象间的直接交互。定义简单明了,就是:用中介对象来处理对象间的直接交互,封装多个对象间的交互细节。举个例子,在房产中介还没出来前,房东与租客间的关系是这样的(多对多的网状关系):网络异常,图片无法展示|而中介出现后 (一对多的星状关系):网络异常,图片无法展示|从原先的房东直接跟租户直接交....

把书读薄 | 《设计模式之美》设计模式与范式(行为型-中介模式)
文章 2022-05-12 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-解释器模式)(下)

代码运行输出结果如下:网络异常,图片无法展示|使用场景语言语法较为简单,且对执行效率要求不高时,如正则判断IP是否合法;问题重复出现,且可用简单语法来进行表达时,如if-else统一解释为条件语句;当一个语言需要解释执行时,如XML中<>括号标识不同的结点含义;优点易于实现语法,一条语法用一个解释器对象解释执行;易于扩展新语法,只需创建对应解释器,抽象语法树时使用即可;缺点可使用场景....

把书读薄 | 《设计模式之美》设计模式与范式(行为型-解释器模式)(下)
文章 2022-05-12 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-解释器模式)(上)

0x0、引言本文对应设计模式与范式:行为型(72),解释器模式 (Interpreter Pattern),用来描述如何构建一个简单的 "语言"解释器。比命令模式更小众,只有在特定领域才会用到,如编译器、规则引擎、正则表达式、SQL等,而这类语言又称 领域特定语言 (Domain Specific Language, DSL)。工作中很少会让我们去编写一个解释器,了解下即可,主要是借鉴思想 如何....

把书读薄 | 《设计模式之美》设计模式与范式(行为型-解释器模式)(上)
文章 2022-05-12 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-命令模式)(下)

最后是 调用者 → 客户端通过与调用者交互来操作不同的命令对象。public class Client { public static void main(String[] args) { // 实例化播放列表 List<Music> musics = new ArrayList<>(); musics.add(ne...

把书读薄 | 《设计模式之美》设计模式与范式(行为型-命令模式)(下)
文章 2022-05-12 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-命令模式)(上)

0x1、定义原始定义将一个请求(命令)封装成一个对象,从而让我们可以使用 不同的请求参数化其他对象(依赖注入),且支持请求的排队执行、记录日志、撤销等功能(附加控制)。落实到编码实现,命令模式用的最核心的实现手段就是:将函数封装成对象以便传递,当你所用的编程语言不支持函数作为参数传递,就可以考虑用下它了。把函数封装成对象,还可以存储,控制执行,这也是命令模式的优点~0x2、写个简单例子用命令模式....

文章 2022-05-12 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-备忘录模式)

0x1、定义原始定义在 不违背封装原则 的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,一遍之后 恢复 对象为先前的状态。很简单,直接上例子~0x2、写个简单例子RPG游戏的例子,存档保存当前血量、蓝量、拥有的金币,支持读档~// 备忘录 public class Memento { private final int hp; private final int m...

把书读薄 | 《设计模式之美》设计模式与范式(行为型-备忘录模式)
文章 2022-05-12 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-访问者模式)(下)

解法就是:将行为/业务抽象成单独的类,函数传入不同的访问者,根据不同的访问者入参执行对应操作,访问者从主动变成被动,以此规避了编译失败问题。接着代码实现一波:访问角色,引擎和车身,传入不同的访问者,执行不同的操作:// 抽象访问角色类 public interface Visit { void visit(DriverVisitor visitor); void visit(Cl...

把书读薄 | 《设计模式之美》设计模式与范式(行为型-访问者模式)(下)
文章 2022-05-12 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-访问者模式)(上)

0x1、定义原始定义允许在 运行时 将一个或多个操作应用于一组对象,将操作与对象结构分离。简单点说一组对象,对象结构可以各不相同,但必须以某个或一组操作作为连接的中心点,即:以行为(某个操作) 作为扩展对象的出发点,在不改变已有类的功能前提下进行批量扩展。0x2、写个简单例子以汽车结构为例,里面包含了引擎,车身等,不同角色的人可以对这些结构进行不同的访问,如:司机 → 查看洗车佬 → 清洁维修佬....

把书读薄 | 《设计模式之美》设计模式与范式(行为型-访问者模式)(上)
文章 2022-05-12 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-迭代器模式)(下)

具体容器类返回迭代器createIterator()方法,改成new OrderTimeIterator()即可,输出结果如下:网络异常,图片无法展示|不懂快排的童鞋不需要了解具体细节,直接换迭代器即可,还可以按照自己的需求自定义迭代器,妙啊。对了foreach循环语法糖,其实也是基于迭代器实现的,接着带出UML类图、使用场景和优缺点:网络异常,图片无法展示|使用场景希望对客户端隐藏遍历算法复杂....

把书读薄 | 《设计模式之美》设计模式与范式(行为型-迭代器模式)(下)
文章 2022-05-12 来自:开发者社区

把书读薄 | 《设计模式之美》设计模式与范式(行为型-迭代器模式)(上)

0x1、定义原始定义迭代器提供一种对容器对象中各个元素进行访问的方法,而又不需要暴露该对象的内部细节。定义很好理解,上构成该模式的四个角色:Iterator (抽象迭代器类) → 定义统一的迭代器方法hasNext()和next(),用于判断当前集合是否还有其他对象及按顺序读取集合中的当前对象;ConcreteIterator (具体迭代器) → 实现抽象迭代器声明的方法,处理具体集合对象中对对....

把书读薄 | 《设计模式之美》设计模式与范式(行为型-迭代器模式)(上)

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。