美文网首页Java学习笔记
java——策略模式

java——策略模式

作者: 草丛伦 | 来源:发表于2017-06-05 23:33 被阅读44次

关于策略模式,可以简单的认为,将一段算法操作,抽取出来,通过接口的形式进行声明,然后在各自的子类写出各自的实现,这样不会相互影响,并且可以做各种替换,很类似与对象的多态。一种方法,多种算法实现,通过参数的形式做区分。
对于算法,如果全部写在一个方法里面,即使用if-else来区分,难免也很臃肿,阅读性很差。
上代码:
定义一个接口,做声明跟管理

interface IStrategy {
    String sort(int[] arr );
}

各自的算法实现:

class StrategyOne implements IStrategy {

    @Override
    public String sort(int[] arr) {
        //冒泡排序
        int length = arr.length;
        for (int j = 0; j < length; j++) {
            //每次循环 都会放置最大值到最右边
            for (int i = 1; i < length - j; i++) {
                if (arr[i - 1] > arr[i]) {
                    int tmp = arr[i];
                    arr[i] = arr[i - 1];
                    arr[i - 1] = tmp;
                }
            }
        }
        return Arrays.toString(arr);
    }
}

class StrategyTwo implements IStrategy {
    @Override
    public String sort(int[] arr) {
        //选择排序
        int length = arr.length;
        for (int i = 0; i < length; i++) {
            for (int j = i + 1; j < length; j++) {
                if (arr[i] > arr[j]) {
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        return Arrays.toString(arr);
    }
}

这样,将实现方式封装起来,使用的时候通过参数传进去,在不同需求上面做不同的替换。

public class TestStragey {

    public static void main(String[] args) {
        int[] arr = {33, 242, 421, 53, 2423, 5534,1,3,2,552};
        print(arr, new StrategyOne());
        print(arr, new StrategyTwo());
    }

    public static void print(int[] arr, IStrategy strategy) {
        String sort = strategy.sort(arr);
        System.out.println(sort);
    }
}

相关文章

  • java建造者模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java单例模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java外观模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java适配器模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java观察者模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java代理模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java策略模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • Java8之被简化的设计模式

    Java8命令模式简化 策略模式

  • Kotlin设计模式之策略模式

    简单介绍下用Kotlin写的策略模式,还有就是与Java版本的对比。 Kotlin Java 输出 实现策略模式时...

  • 设计模式 | 策略模式及典型应用

    本文的主要内容: 介绍策略模式 示例商场购物打折策略的实现 策略模式总结 源码分析策略模式的典型应用Java Co...

网友评论

    本文标题:java——策略模式

    本文链接:https://www.haomeiwen.com/subject/gipwfxtx.html