[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020]
上面3节实现了从最初的对整形数组排序到最后可以对所有类型都可以根据需要定义自已的比较器进行排序,这里面不同的比较器,实现了不同的算法,并且单独成一个类,在应用时,可以根据实际需要灵活选择,可扩展性强,其实这里就用到了策略模式。
策略模式Strategy是属于设计模式中对象行为模式型模式,主要是定义 一系列的算法,把这些算法一个个封装成单独的类,比如以上三节中的比较器。策略模式应用比较广泛,如学校的流量变化图,可能有两种实现方式,一个是拆线,一个是饼状形表示,又如,我们上述3节中的Cat类型的高度比较器,重量比较器。通过 定义不同的策略,我们达到了在程序运行期间,可以自由切换算法的上的。
实际整个策略模式的核心部分就是抽象类或接口的使用,使用策略模式可以在用户需要变化时,修改代码量很少,而且快速。
策略模式和工厂模式有一定的类似。策略械相对简单容易理解,并且可以在运行时刻自由切换,而工厂模式主要是用来创建对象的。
策略模式适合下列场合:
1. 以不同的格式保存文件
2. 以不同的算法压缩文件
3. 以不同的算法截获图像
4. 以不同的格式输出同样数据的图形,如曲线,Bar等。
......
总之,一句话,策略模式适合于实际开发中遇到的“要以不同的算法,不同的格式等实现相同的功能”的情形。策略模式的决定权在用户,系统本身提供不同算法的实现,对各种算法做封装。因此,策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法即可。
java设计模式 -------- 行为模式 之 策略模式(4)
原文地址:http://blog.csdn.net/jesson20121020/article/details/41913587