设计模式-行为型软件设计模式(五)

来源:互联网 发布:c语言驱动写法 编辑:程序博客网 时间:2024/06/08 09:42

策略模式

介绍

策略模式定义了一系列的算法,将每一个算法封装起来,并且使它们之间可以相互替换,策略模式让算法的变化不会影响到使用算法的客户。
这里写图片描述
(1)Stragegy:定义了一个共同的接口。所有具体的算法类实现这个接口。环境类Context使用这个接口调用具体的算法类。
(2)ConcreteStragegy:封装了具体的算法,实现同一个接口。
(3)Context:环境类用于配置一个具体的算法策略对象,维持一个策略接口类型的参考(reference),并且可以定义一个让接口Strategy的具体对象访问的接口。

示例

算法类public interface SortAlgorithm{    public abstract int[] sort(int[] nums,Context ct);}public class BubbleSort implements SortAlgorithm{    public int[] sort(int[] nums,Context ct)    {        ...    }}class Context{    SortAlgorithm alg;    private long stratTime;    private long endTime;    ...    public Context(SortAlgorithm alg){this.alg = alg;}    public int[] sortIntArray(int[] a)    {        return this.alg.sort(a,this);    }    ...}

优点

(1)得到一系列可复用的算法,这些算法继承了一个共同的抽象类。
(2)将各个算法封装在不同的策略子类中,使逻辑更加清晰,各个算法可以独立的变化。
(3)是功能改变或者拓展更加的容易。

原创粉丝点击