策略模式(Strategy Pattern)
指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。将每个算法封装在独立的类中,使得它们可以互相替换。可以在运行时根据需要选择不同的算法,而不需要修改客户端代码。
主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。
关键代码:实现同一个接口。
优点: 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。
缺点: 1、策略类会增多。 2、所有策略类都需要对外暴露。 3、客户端知道所有的算法或行为的情况。
注意事项:如果一个系统的策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题。
组成:
/** * 操作数据库时(抽象策略角色) */ public interface OperateStrategy { String operation(String id); } /** * insert操作 (具体策略角色) */ public class OperateInsert implements OperateStrategy{ @Override public String operation(String id) { return "insert into success !! id ==" + id ; } } /** * Select操作 */ public class OperateSelect implements OperateStrategy{ @Override public String operation(String id) { return "select success !! id ==" + id ; } } /** * Delete操作 */ public class OperateDelete implements OperateStrategy{ @Override public String operation(String id) { return "delete success !! id ==" + id ; } } /** * Update操作 */ public class OperateUpdate implements OperateStrategy{ @Override public String operation(String id) { return "update success !! id ==" + id ; } } /** * Context 执行上下文(环境角色) */ public class OperateContext { private OperateStrategy operateStrategy; public OperateContext(OperateStrategy operateStrategy){ this.operateStrategy = operateStrategy; } public String execute(String id){ return operateStrategy.operation(id); } } //执行 public static void main(String[] args) { OperateContext context = new OperateContext(new OperateSelect()); System.out.println(context.execute("select01")); context = new OperateContext(new OperateDelete()); System.out.println(context.execute("delete01")); context = new OperateContext(new OperateUpdate()); System.out.println(context.execute("update01")); context = new OperateContext(new OperateInsert()); System.out.println(context.execute("Insert01")); }
结果:
文章来源地址https://www.toymoban.com/news/detail-851619.html
==========================================收工=================================================================================
文章来源:https://www.toymoban.com/news/detail-851619.html
到了这里,关于java 策略模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!