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

策略模式

介绍

策略模式定义了一系列的算法,将每一个算法封装起来,并且使它们之间可以相互替换,策略模式让算法的变化不会影响到使用算法的客户。
这里写图片描述
(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)是功能改变或者拓展更加的容易。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一夜了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值