深入浅出设计模式(Design Pattern)----策略模式(Strategy Pattern)
这是设计模式开篇,我觉得策略模式真的对我来说是一种醍醐灌顶的感觉.让我感觉:哇,真的诶,用这种设计模式真的可以方便很多,代码的层次结构更清晰.下面就让我们开始吧.策略模式:策略模式定义了算法族,分别将其封装起来,让他们之间可以相互转换,这个模式使得算法的变化独立于使用算法的客体. 但是严谨的定义通常是难以理解的,接下来我们通过一个故事,来深刻理解这种设计模式的使用场景和强大之处吧(以下例子来自Head First Design Pattern 但是我会用自己的语言诠释一遍,并加上自己的理解).
前面三张图的子类搞错了(有一个子类应该是Man);
1.先从简单的模拟人物的应用开始
假如小明的公司开发一个应用来根据用户的要求来生成各种模拟人物(奇迹暖暖?).用户填写参数然后就可以生成各种人物形象.这个系统使用了标准的OO技术,设计了一个Human超类(Superclass),然后让不同的人物来继承这个超类.
看起来没什么难的?是吧.
2.现在我们得让人跑起来
公司现在发现,做这种类型应用的人太多了,光是让用户可以看到外表(display())这件事太简单,很多应用都可以,所有决定让人物可以跑起来更加立体的展示人物,这样子就可以吸引更多用户了.
小明于是拍脑袋一想,这还不简单吗?我只需要在超类Human里面加上一个run()方法,让所有的人物都可以跑起来.