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;
        }
    }
    
  • 相关阅读:
    oracle之数据限定与排序
    oracle之分组函数
    oracle之SQL的数据类型
    lftp简单使用
    黑盘-蓝盘-绿盘-红盘
    windows 路由
    http扩展请求头中的x-Forwarded-For
    http状态码304
    firewall 实现数据的端口转发
    通过curl获取网页访问时间
  • 原文地址:https://www.cnblogs.com/Theshy/p/8521955.html
Copyright © 2011-2022 走看看