策略模式
设计模式文章中介者模式代理模式抽象工厂模式详解 —— head first 设计模式装饰者模式适配器模式策略模式观察者模式建造者模式 (Builder)简介在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。 意图:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。 主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。 何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。 如何解决:将这些算法封装成一个一个的类,任意地替换。 关键代码:实现同一个接口。 优点:?1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。 缺点:?1、策略类会增多。 2、所有策略类都需要对外暴露。 实战演练策略模式结构下面就以一个示意性的实现讲解策略模式实例的结构。
代码实战?定义一个算法接口,所有具体的算法都需要实现该类。 public interface Strategy { /** * 策略方法 */ void algorithmInterface(); } 下面就是具体的算法类,每一种算法都实现了算法接口,并且有自己的独立算法,需要在?algorithmInterface() 方法中完成。 class ConcreteStrategyA implements Strategy { @Override algorithmInterface() { //相关的业务 } } class ConcreteStrategyB class ConcreteStrategyC } } 算法完成后,就需要将其运用到具体某个对象当中,比如下面的 context,持有对?Strategy 的引用。 class Context { 持有一个具体策略的对象 private Strategy strategy; * 构造函数,传入一个具体策略对象 * @param strategy 具体策略对象 public Context(Strategy strategy){ this.strategy = strategy; } contextInterface(){ strategy.algorithmInterface(); } } 后面,我们将具体的策略传入就好 选择使用的策略 Strategy s = new ConcreteStrategyA(); Context context = Context(s); context.ontextInterface(); 应用实例:?
使用场景:
Android 中的应用
参考文献1、策略模式 2、实际项目运用之Strategy模式(策略模式) ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |