本文共 1342 字,大约阅读时间需要 4 分钟。
例如,在该模式中定义一系列算法,对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。
在策略模式中分为一下几个部分:抽象策略类、具体策略类、环境类
定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法,一般使用接口或抽象类实现
package com.wx.demo01;//抽象策略类public interface Strategy { //策略方法 public void strategyMethod();}
实现了抽象策略定义的接口,提供具体的算法实现。
package com.wx.demo01;//具体策略Apublic class ConcreteStrategyA implements Strategy { public void strategyMethod() { System.out.println("具体策略A的策略方法被访问"); }}
package com.wx.demo01;//具体策略类Bpublic class ConcreteStrategyB implements Strategy { public void strategyMethod() { System.out.println("具体策略B的策略方法被访问"); }}
持有一个策略类的引用,最终给客户端调用。
package com.wx.demo01;public class Context { private Strategy strategy; public Strategy getStrategy() { return strategy; } public void setStrategy(Strategy strategy) { this.strategy = strategy; } public void strategyMethod(){ strategy.strategyMethod(); }}
package com.wx.demo01;public class StrategyPattern { public static void main(String[] args) { Context c= new Context(); Strategy s= new ConcreteStrategyA(); c.setStrategy(s); c.strategyMethod(); System.out.println("-----------------"); s=new ConcreteStrategyB(); c.setStrategy(s); c.strategyMethod(); }}
转载地址:http://ysrdb.baihongyu.com/