Nestor's noteblog

设计模式-策略模式

应用场景 策略模式与状态模式很像, 都属于行为模式. 从最终呈现的UML类图上来看可能两者没什么太大区别. 区别在于, 状态模式主要目的是让主体可以依据不同的状态确定行为. 比如不同的工具执行不同的操作. 策略模式则主要用来封装算法, 主体状态并没有变化, 但是可以自由组合要执行的行为方式. 举例来说, 编写一个简单的图片文件处理程序, 需要将给定的图片进行压缩, 然后为其添加滤镜....

设计模式-状态模式

应用场景 当执行同一种操作时基于不同的状态出现不同的效果. 比如在画图软件中, 如果选中了画笔, 按住鼠标在画布上拖动就会绘制线条. 如果选中了选择工具, 按住鼠标在画布上拖动就会出现一个选择框. 对于鼠标的操作行为是相同的, 但是基于选中工具的状态不同, 则会执行不同的操作. 基础实现方式 可以创建一个枚举类, 用来列出所有的工具类型, 然后让画布包含一个枚举成员, 并在操作时...