设计模式之策略模式(Strategy)

策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。

优点:

  • 算法可以自由切换。
  • 避免使用多重条件判断。
  • 扩展性良好。

缺点:

  • 策略类会增多。
  • 所有策略类都需要对外暴露。

Java 策略模式(Strategy) 示例

public interface Strategy {
	public void encry(String str);
}

public class MD5EncryStrategy implements Strategy{
	@Override
	public void encry(String str) {
		LogHelper.log("md5 加密 字符串 成功 ");
	}
}

public class AESEncryStrategy implements Strategy{
	@Override
	public void encry(String str) {
		LogHelper.log("aes 加密 字符串 成功 ");
	}
}

public class Context {
	private Strategy strategy;
  public Context(Strategy strategy) {
      this.strategy = strategy;
  }
  public void executeStrategy(String str) {
  	strategy.encry(str);
  }  
  public static void main(String[] args)
  {
  	Context context = new Context(new AESEncryStrategy());
  	context.executeStrategy("aaaaaaaa");
  	context = new Context(new MD5EncryStrategy());
  	context.executeStrategy("aaaaaaaa");
  }
}

运行结果为

【www.pangugle.com】-  aes 加密 字符串 成功
【www.pangugle.com】-  md5 加密 字符串 成功