zoukankan      html  css  js  c++  java
  • 策略模式

    角色

    • 抽象策略
      策略的一个抽象,通常是一个函数式接口。
    • 具体策略
      实现抽象策略的类的实例,匿名内部类的对象较为常见。
    • 策略使用者
      该使用者实例应该持有一个抽象策略引用作为成员,以便调用策略中的方法。

    UML


    通常的用法是创建Environment类同时使用匿名内部类初始化strategy引用,然后调用Environment中的方法,这些方法中会调用Strategy的实现类实例的方法。策略模式所处可见,是一种十分常用的设计模式,解耦具体策略。

    例子代码

    • Environment类:
       public class SortUtil {
        private Sort sort;
    
        public SortUtil(Sort sort) {
            this.sort = sort;
        }
    
        public SortUtil() {
        }
    
        public Sort getSort() {
            return sort;
        }
    
        public void setSort(Sort sort) {
            this.sort = sort;
        }
    
        public void sort(List<Person> list){
            sort.sort(list);
        }
    }
     
    
    • Strategy接口
    public interface Sort {
        void sort(List<Person> list);
    }
    
    • Strategy类的一个实现类:
    public class SortByNameASC implements Sort,Comparator<Person> {
    
        public void sort(List<Person> list)
        {
            Collections.sort(list,this);
        }
        @Deprecated
        public int compare(Person o1,Person o2){
            int result = o1.getName().compareTo(o2.getName());
    
            if(0 == result){
                return o1.getId() - o2.getId();
            }
            return result;
        }
    }
    
  • 相关阅读:
    DECLARE
    deallocvt
    科研院所
    jQuery Ajax 确定 form 表单 submit 提交成功
    Java实现 LeetCode 10 正则表达式匹配
    Java实现 LeetCode 10 正则表达式匹配
    Java实现 LeetCode 9 回文数
    Java实现 LeetCode 9 回文数
    Java实现 LeetCode 9 回文数
    Java实现 LeetCode 8 字符串转换整数(atoi)
  • 原文地址:https://www.cnblogs.com/Theshy/p/8521955.html
Copyright © 2011-2022 走看看