您的位置:首页 > 其它

浅析设计模式之策略模式

2015-03-25 22:36 190 查看

浅析设计模式之策略模式

写在前面

平日里遇到的编程问题,一般都能看到CSDN博客里有人给出资料,而我想要拥有属于自己技术博客的想法也存在很久了。我写博客主要是为了把每天遇到的问题深入并记录下来,一来给以后自己回顾用,二来也希望帮到急着要用资料的人,三来自己的书面表达能力实在弱练练也是好的,四来算是给自己一个学习的动力,看着自己写的博客不也会颇有成就感的么。好,这是我的第一篇博客

概念

defines a family of algorithms.
encapsulates each algorithm.
makes the algorithms interchangeable within that family.

定义了算法家族
包装各个算法
使算法家族中的算法能在使用中交换


设计模式基本原则

Object-orientated Basic: Abstraction, Encapsulation, Polymorphism
Object-orientated Principles: Encapluate what varies, Favor composition over inheritence, program to interface not implementation

面向对象基础:抽象,封装,多态
面向对象原则:封装变化,能用组合不用继承,针对接口编程


策略模式的理解

面向对象编程讲究封装对象,将不变的写进父类中,将变化的部分进行抽象。当子类继承父类时,将抽象的部分具体化,而不变的部分已经写入父类不用理会。

设计模式原则的目的就是使不变代码的能够灵活复用,使变化的部分能够自由更换,使往后的维护修改能够方便。

个人认为设计模式是面向对象编程的核心思想,掌握设计模式就能够快速上手各种面向对象编程语言。

从原则分析为什么使用策略模式



策略模式的算法家族支持了算法抽象接口(封装变化),环境类有着算法抽象类的引用(使用组合),在环境类中,用户可以使用set方法更换算法(针对接口)。充分体现了面向对象基本原则。

如果一味的将环境的父类为抽象类,环境类将要在初始化时同时具体化抽象方法,这样在有些使用相同算法的类中,代码将会重复,没有被很好的复用。同时,使用继承的环境类不能更换算法。

参考资料

Strategy pattern - wiki

设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式