| JAVA世纪网 | 老紫竹的家 | 老紫竹的专栏 | 老紫竹的博客园 | 老紫竹的BlogJava |

1.策略模式的介绍,类图
2.归并排序的实现
3.深度树的实现
4.知道的排序和复杂度,应用场景


1 1 策略模式的介绍,类图

12种设计模式的快速参考
一、模式概述
策略模式(Strategy Pattern)在外形上与状态模式很相似,但在意图上有些不同。其意图是使这些算法可以相互替换,并提供一种方法来选择最合适的算法。
在我应用OOP的设计过程演化(三)这篇文章里应用到了策略模式,在图书的租金计算上分多种情况,每一种不同类型的图书的租金是不一样的,而站在用户的角度来看,不同类型用户的租金收取又是不一样的,见下面分析:
计算机类图书:会员租借打5折,普通顾客租借打6折。
小说类图书:会员租借打6折,普通顾客租借打8折。
生活类图书:会员租借打9折,普通顾客租借打9折。

从上面分析可知,在租金计算这块是非常复杂的,由于有这样复杂的折扣算法,使得价格计算问题需要系统地解决。
书店经营一段时间后发现生活类的图书出租量很小,或许是因为租金的原因,很少有人来租借,于是老板决定降低租金,将生活类图书的租金按照计算机类的租金价 格收取。这个时候怎么办?是不是已经有现存的计算机类图书租金计算策略,此时我们只需要把生活来图书的租金计算策略换为计算机类图书的租金计算策略便 OK。通过这样的分析,策略模式(Strategy)正是解决这样的问题的模式,它的定义:"准备一组算法,并将每一个算法封装起来,使得它们可以互 换。"

二、模式定义
定义:"准备一组算法,并将每一个算法封装起来,使得它们可以互换。"

三、模式意图
策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。

四、模式UML图

五、模式参与者
根据上面UML,不难看出,在策略模式里主要有三种角色:环境角色、抽象策略角色和具体策略角色。
环境(Context)角色:持有一个抽象策略(Strategy)角色的引用。也叫上下文。
抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或一个抽象类来实现。
具体策略(ConcreteStrategy)角色:包装了相应的算法和行为。

2 java归并算法实现

3 深度树的实现?
我一般是用idParent + level 来标识一个树。

idParent指向父节点。 顶层为0

还可以采用预排序的算法,加上 left + right

先根遍历树算法(modified preorder tree traversal algorith)

第4个没看懂
posted on 2009-03-19 06:33  老紫竹  阅读(7375)  评论(13编辑  收藏  举报