killBase系列 -- 设计模式

设计模式

过去,曾经看过一本书, Head First 设计模式。
那是第一次真正意义上的接触设计模式上面的东西。生动形象加上贴图作为例子。
可以说是对设计模式有了一点初步的了解,但是,碍于时间原因,不过是浅尝辄止吧。
不过,现在入职后,因为要阅读大量的源码,所以,需要对代码结构有更深层次的了解。
因此,通过设计模式进行对照,一方面方便源码的阅读,一方面加深自己对设计模式的印象。

不过这一次的博客,不能像过去那样,只是作为一个知识的储存场所。应该是整理思维脉络的时候。
所以,这一次的大概逻辑是

  1. 先把自己能想象到的设计模式列出来。
  2. 然后把作用列出来。
  3. 然后是 Uml 图。
  4. 最后做补充。

Factory Method

生成实例的工厂。 有别于静态工厂。

Template Method

将逻辑写到抽象类中,然后具体实现由子类实现

Iterator 模式

帮助遍历整个集合

Adapter

将两个不同的类,组合起来。并对外界表现为其中一个的模样

Bridge

桥接,说明有两个岸。分别代表功能层次与实现层次

State

取消 if 语句

Builder

灵活的创建相应的对象。

Composite

File 与 Directory , 但是同属于 Item

Abstract Factory

上面的工厂是生成不同的实例,而这里的工厂是生成不同的工厂。

Visitor 模式

交给 拜访者 做某些事情。

Chain of Responsibility

一层层的向下推卸责任。

Command

这里的主体,是 Command , 但往往每个命令存在单一的指令。。不是单一的策略。而是可以多个命令顺序执行。并且是由命令执行。 execute

Strategy

这里的策略内的方法是实现上一层逻辑的基础,内部可能存在多个方法,只要替换了这个类,整个逻辑就不一样了。

Observer

Mediator 模式

交给中立者仲裁

Decorator 模式

添加装饰

1
2
3
4
5
6
7
new SideBorder(
new FullBorder(
new SideBoder(
new SideBoder()
)
)
)

类似于这种,可以一致持续下去。

Facade 模式

将处理的逻辑隐藏起来。·

Memento 模式

储存 snapshot

Protype 模式

基于原型的模式上,加入一些新功能。
利用了 clone() 方法 – 默认浅拷贝

  1. 使用原型模式创建对象比直接new一个对象在性能上要好的多,因为Object类的clone方法是一个本地方法,它直接操作内存中的二进制流,特别是复制大对象时,性能的差别非常明显。
  2. 使用原型模式的另一个好处是简化对象的创建,使得创建对象就像我们在编辑文档时的复制粘贴一样简单。
  3. 因为以上优点,所以在需要重复地创建相似对象时可以考虑使用原型模式。比如需要在一个循环体内创建对象,假如对象创建过程比较复杂或者循环次数很多的话,使用原型模式不但可以简化创建过程,而且可以使系统的整体性能提高很多。

Flyweight 模式

Proxy 模式

0%