标签:共享 algorithm 影响 abstract 类设计 英文 style 实例化 test
策略模式(Strategy Pattern)也叫政策模式,是一种比较简单的模式。
英文原话:Define a family of algorithms,encapsulate each one,and make them interchangeable.
翻译:定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以互相替换,使得算法可以在不影响客户端的情况下发生变化。
角色:
环境(Context)角色:该角色也叫上下文角色,有承上启下的作用,屏蔽高层模块对策略、算法的直接访问,它持有一个Strategy类的引用。
抽象策略(Strategy)角色:该角色对策略、算法进行抽象,通常定义每个策略或算法必须具有的方法和属性。
具体策略(Concrete Strategy)角色:该角色实现抽象策略中的具体操作,含有具体的算法。
/** * 抽象策略类 */ public abstract class Strategy { //策略方法 public abstract void strategyInterface(); } /** * 具体策略类 */ public class ConcreteStrategy extends Strategy { //实现策略方法 @Override public void strategyInterface() { //具体算法 System.out.println("具体策略算法"); } } /** * 环境角色类 */ public class Context { private Strategy strategy = null; public Context(Strategy strategy) { this.strategy = strategy; } //调用策略方法 public void contextInterface(){ this.strategy.strategyInterface(); }
/**
* 测试方法
*/
public static void main(String[] args) {
Strategy strategy = new ConcreteStrategy(); //实例化一个策略类,此处可替换为其他策略
Context context = new Context(strategy); //环境类封装策略类
context.contextInterface(); //环境类调用方法
}
}
标签:共享 algorithm 影响 abstract 类设计 英文 style 实例化 test
原文地址:https://www.cnblogs.com/aeolian/p/8889391.html