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

    策略模式属于对象的行为模式。每一个策略都有一个共同的接口,从而使得它们可以相互替换。

    我理解的策略模式其实本质就是Java的多态思想:用父类型的引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为。

    这个模式涉及到三个角色:

      ●  环境(Context)角色:持有一个Strategy的引用。

      ●  抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。

      ●  具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。

    源代码

      环境角色类

    复制代码
    public class Context {
        //持有一个具体策略的对象
        private Strategy strategy;
        /**
         * 构造函数,传入一个具体策略对象
         * @param strategy    具体策略对象
         */
        public Context(Strategy strategy){
            this.strategy = strategy;
        }
        /**
         * 策略方法
         */
        public void contextInterface(){
            
            strategy.strategyInterface();
        }
        
    }
    复制代码

      抽象策略类

    复制代码
    public interface Strategy {
        /**
         * 策略方法
         */
        public void strategyInterface();
    }
    复制代码

      具体策略类

    复制代码
    public class ConcreteStrategyA implements Strategy {
    
        @Override
        public void strategyInterface() {
            //相关的业务
        }
    
    }
    复制代码
    复制代码
    public class ConcreteStrategyB implements Strategy {
    
        @Override
        public void strategyInterface() {
            //相关的业务
        }
    
    }
    复制代码
    复制代码
    public class ConcreteStrategyC implements Strategy {
    
        @Override
        public void strategyInterface() {
            //相关的业务
        }
    
    }
    复制代码

    摘自:《JAVA与模式》之策略模式

  • 相关阅读:
    Spring JdbcTemplate源码阅读报告
    Linux 套接字通信笔记(一)
    Python的科学计算包matplotlib setup
    创建Spring Boot项目
    Java反射与自定义注解
    二手前端入门React项目
    Spring 并发事务的探究
    使用IDEA结合MAVEN创建一个Spring Java Web项目
    FutureTask与Fork/Join
    结合业务,精炼SQL
  • 原文地址:https://www.cnblogs.com/xiangkejin/p/6877366.html
Copyright © 2011-2022 走看看