• 策略模式简答例子


    策略模式:

     1 package strategymodetest;
     2 
     3 public class StrategyDemo {
     4 
     5     /**策略模式编程思路:
     6      * 1、定义策略接口,表示具备某种能力,功能
     7      * 2.定义接口实现类,具备具体的功能
     8      * 3.定义使用类,该类持有接口(接口作为该类的一个属性,并使用构造方法为该属性赋值)
     9      * 4.new出接口的实现类,将实现类对象作为参数,再new出一个使用类,
    10      * @param args
    11      */
    12     public static void main(String[] args) {
    13         int[] array = {1,56,44,22,11,66,90,80};
    14         ISort bubbleSort = new BubbleSort();
    15         ISort selectSort = new SelectSort();
    16         Context context = new Context(selectSort);
    17         context.sort(array);
    18         context.printArray(array);    
    19     }
    20 
    21 }
    22 
    23 class Context {
    24     private ISort iSort = null;//Context使用ISort,持有ISort接口的引用变量,可以接收不同的具体的策略类对象
    25     public Context(ISort iSort) {
    26         this.iSort = iSort;        
    27     }
    28     public void sort(int[] array) {
    29         iSort.sort(array);//交给具体接收到的策略类对象来排序
    30     }//父类引用变量调用父类的方法时,调用的是具体的对象重写后的方法;
    31     
    32     public void printArray(int[] array) {
    33         for(int i = 0; i < array.length; i++) {
    34             System.out.print(array[i]+ " ");
    35         }
    36     }
    37 }
    38 
    39 interface ISort {//策略类接口,表示排序功能
    40     public void sort(int [] array);
    41 }
    42 
    43 //封装了冒泡排序法 ——具体的排序算法
    44 class BubbleSort implements ISort {
    45 
    46     @Override
    47     public void sort(int[] array) {
    48         System.out.println("冒泡排序法");//冒泡排序,外循环n-1次,内循环n-i-1次,n是数组长度
    49         for(int i = 0; i < array.length - 1; i++) {
    50             for(int j = 0; j < array.length - i - 1; j ++) {
    51                 if(array[j] > array [j+1]) {
    52                     int temp = array[j];
    53                     array[j] = array[j+1];
    54                     array[j+1] = temp;
    55                 }
    56             }
    57         }        
    58     }
    59 }
    60 
    61 //封装选择排序法
    62 class SelectSort implements ISort {
    63 
    64     @Override
    65     public void sort(int[] array) {
    66         System.out.println("选择排序法");
    67         int min = 0;
    68         for(int i = 0; i < array.length; i++) {
    69             min = i;
    70             for(int j= i+1; j <array.length; j++) {
    71                 if(array[min] > array[j]) {
    72                     min = j;//保存最小的数的下标
    73                 }
    74             }
    75             if(i!=min) {
    76                 int temp = array[i];
    77                 array[i] = array[min];
    78                 array[min] = temp;
    79             }
    80         }
    81     }
    82     
    83 }
  • 相关阅读:
    leetcode| Intersection of Two Arrays II
    Spring Boot起步依赖:定制starter
    SpringBoot自动配置的魔法是怎么实现的
    Dubbo中的IoC实现
    必须知道的String知识点
    Dubbo的SPI机制
    为什么要设置HTTP timeout?
    重构代码——简单工厂模式+模板方法模式
    计算机基础——位运算
    系统间HTTP调用代码封装
  • 原文地址:https://www.cnblogs.com/enjoyjava/p/8192303.html
Copyright © 2020-2023  润新知