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

  • 相关阅读:
    BZOJ5212 ZJOI2018历史(LCT)
    BZOJ5127 数据校验
    253. Meeting Rooms II
    311. Sparse Matrix Multiplication
    254. Factor Combinations
    250. Count Univalue Subtrees
    259. 3Sum Smaller
    156. Binary Tree Upside Down
    360. Sort Transformed Array
    348. Design Tic-Tac-Toe
  • 原文地址:https://www.cnblogs.com/hup666/p/10402864.html
Copyright © 2011-2022 走看看