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

原文地址:https://www.cnblogs.com/hup666/p/10402864.html