设计模式之Strategy策略模式


前言

本人对于设计模式的学习,仅供参考!


一、Strategy策略模式

策略模式就是通过分别封装行为接口,实现算法族,超类中放行为接口对象在子类里面设定具体行为对象。简单来说,就是将算法与业务隔离开来,方便我们根据实际情况做出调整的模式。
策略模式使得算法可以在不收客户端影响的情况下发生变化,相当于可插入式的算法,可以使得在保持接口不变的情况下使具体算法可以互换

二、策略模式原则

其原则为:分离变化部分,封装接口,基于接口编程各种功能。此模式让行为变化独立于算法的使用者。
其用意为:针对一组算法,将每一个算法封装到具有共同接口的独立类中,从而使得他们可以相互替换。

三、使用场景

策略模式最经典的使用场景莫过于利用Comparator实现排序。

以下为Comparator接口的内容(只保留了一个抽象方法,其他方法为default)

public interface MyComparator<T> {
   
    int compare(T o1,T o2);
}

1.先做比较练习

如果要按长度比较字符串,可以定义一个实现Comparator<String>的类。

在这里当返回值为1时代表o1字符串长度大于o2字符串长度,当返回值为-1时则代表o2字符串长度大于o1字符串长度,当返回值为0则代表他们字符串长度相等。

public class LengthComparator implements MyComparator<String> {
   
    @Override
    public int compare(String o1, String o2) {
   
        if(o1.length()>o2.length()) return 1;
        else if (o1.length()>o2.length()) return -1;
        return 0;
    }
}

2.为一组对象排序

现有一个Person类如下:

public class Person {
   
    //名称
    private String name;
    //身高 单位cm
    private int height;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值