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

    概念

        将每一种算法都封装到具有共同接口的独立类中,从而使他们可以相互替换

    特点
    功能特点:
        算法在不影响客户端运行的情况下发生变化,从而改变不同功能(不同算法逻辑)。

    设计特点:
        1封装变化的部分
        2针对接口编码,不针对具体实现编码

    角色组成

    1 抽象策略角色(A):接口或者抽象类,内含策略方法(算法)
    2 具体策略角色:继承或者实现A,并实现策略方法(算法)
    3 环境角色:持有一个策略类的引用

    案例

    实现加减乘除功能

    1、定义抽象策略角色

    //策略接口 
    public interface  Strategy
    {
           public int calculate(int a,int b);
    }  

    2、定义具体策略角色(本例子仅仅演示,只是定义加、减两种具体策略)

    加法策略:

    //加法策略
    public class AddStrategy()
    {
        public int calculate(int a,int b)
        {
              return a+b;
        }
    }

    减法策略:

    //减法策略
    public class SubtractStrategy()
    {
        public int calculate(int a,int b)
        {
              return a-b;
        }
    }

    3、环境角色

    //环境角色
     public class environmentRole 
    {
          //策略对象
          private Strategy stategy;
          public environmentRole(Strategy stategy)
        {
            this.stategy = stategy;
        }
    
       //get set 方法
    } 
    int a = 10;
    int b = 8;
    
    //加法
    //环境角色
    environmentRole  role = new environmentRole (new AddStrategy());
    
    int result = role .calculate(a,b);
    
    //如果需要改变策略为减法
    
    role.setStrategy(new SubtractStrategy());
    
    result = role .calculate(a,b);

    end

  • 相关阅读:
    日常使用JAR包 MAVEN
    二维码
    常用验证
    文件操作
    邮件发送
    Spring获取bean对象帮助类
    mybatis-generator自动映射数据库,生成mapper.xml、mapperDao、entity
    JAVA爬虫
    MVC调试异常--未能将脚本调试器附加到计算机
    科研技能之文献管理Endnote X9——谈实用性
  • 原文地址:https://www.cnblogs.com/hup666/p/10402864.html
Copyright © 2011-2022 走看看