北川广海の梦
北川广海の梦
life's not out to get you
Home
Archives
Moments
Links
Me
Home
Archives
Moments
Links
Me
设计模式
默认分类
杂项
Java
Gis
web
操作系统
算法
转载
数据结构
数据库
Rust
设计模式
Golang
Redis
设计模式:中介者模式与桥接模式
中介者模式 在一个包含UI的客户端程序中,我们通常会包含许多UI组件,这些组件之间常常会有复杂的逻辑交互。例如一些按钮联动等等。如果我们在每一个组件中都需要处理其他按钮发生的事情,那么每一个组件都会变得极不稳定且难以维护。 想象一下机场塔台,它负责一切航班之间的调度。航班之间互相无需关心彼此的存在。
设计模式
518
0
0
2021-11-11
设计模式:备忘录模式与组合模式
备忘录模式 当我正在写下这篇博客的时候,我会不断的修修改改。Ctrl+Z组合键是我的好帮手。但是此时我编辑的内容是如何实现撤销的呢?答案就是通过备忘录模式。 假设当前编辑器的文本内容就是它的状态。我们可以通过一个栈来记录每次编辑的状态。但是现在我们只保存了文本,如果我们需要恢复光标的位置,或者更多的
设计模式
437
0
0
2021-11-10
设计模式:生成器模式与原型模式
建造者模式 当我们需要构建一个房子的时候,这是一个比较复杂的过程,因为房子由好几个部分组成:门、窗户、屋顶、墙壁。如果按照普通的做法,我们可能会写一个房子类,然后写上一个构造函数,房子有几个部分,构造函数就有几个参数。 客户端在构建房子的时候,还需要知道所有的细节,有些参数并不是必要的。这样的构造函
设计模式
453
0
0
2021-11-09
设计模式:享元模式与命令模式
设计模式
389
0
0
2021-11-08
设计模式:责任链与模版方法
责任链模式 当我们面临一个流程性的处理的时候,例如我们需要构建一个请求的校验流程。 我们可能会写一个方法:ReqeuestCheck,然后在里面写下一大堆教研逻辑,if XXX,return XXX,else XXX return XXX。这样会使得方法大量膨胀,且难以维护。 而通常来说,这个校验的
设计模式
383
0
0
2021-11-06
设计模式:代理模式与迭代器模式
代理模式 代理模式可以让我们建立一个与被代理对象实现了相同功能接口的代理对象。并且代理对象能够适用于任何依赖原被代理对象的场景。 通过代理模式,我们能对客户端的请求进行拦截,例如对参数进行校验,对原返回值进行处理,甚至改变传入的参数,增加业务逻辑。 由此可以看出,代理模式是对原对象(非原功能)的一种
设计模式
333
0
0
2021-11-04
设计模式:状态模式与策略模式
设计模式
274
0
0
2021-11-03
设计模式:外观模式与观察者模式
观察者模式 通过观察者模式,允许我们创建一种订阅机制,当某种特定事件发生的时候,通知多个订阅这个对象的其他对象。 实现方式可参考:如何在java实现事件这篇文章。 在C#中,可以直接通过委托与event便捷实现。这里不再赘述。 观察者模式非常类似于发布-订阅模式,但是两者是存在区别的。 观察者模式存
设计模式
402
0
0
2021-11-02
设计模式:适配器与装饰器
装饰器模式 我们常常面临一个问题,在原有的功能上进行扩展,如何优雅的进行实现? 有人会说,给这个类加一个新方法不就得了。这不就违背了开闭原则吗?类应该对扩展开放,对修改封闭。 一般常见有两种方式,一是直接继承于想要扩展的类,那么我们就能够在原有功能的基础上,扩展更多的方法。下面将进行简单实现:
设计模式
383
0
0
2021-11-01
设计模式:工厂
简单工厂模式简单工厂模式可以有效的封装根据输入参数创建对应对象的行为。通过简单工厂模式,可以使需要这个对象的地方,无需关心这个对象的创建细节,将创建过程完全委托于工厂,自己仅需要接收工厂产生的对象,并拿着使用即可。这样可以有效的避免重复写出大量的冗余代码。试想项目中存在大量的依赖某个对象,此对象的创
设计模式
320
0
0
2021-10-31