GoF23种设计模式之行为型模式之策略模式
2013-06-13 23:35
477 查看
传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229
(2)需要使用一个算法的不同变体的时候。
(3)算法使用了客户不应该知道的数据的时候。以避免暴露复杂的、与算法相关的数据结构。
(4)一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现的时候。将相关的条件分支移入它们各自的Strategy类中以代替这些条件语句。
(2)ConcreteStrategy:实现Strategy接口的某种具体算法。
(3)Context:用一个ConcreteStrategy对象来配置。维护一个对Strategy对象的引用。可定义一个接口来让Stategy访问它的数据。
1概述
定义一系列算法,把它们一个个都封装起来,并且让它们可以相互替换。策略模式使得算法可以独立于使用它的客户而发生变化。2适用性
(1)许多相关的类仅仅是行为存在差异的时候。“策略”提供了一种使用多个行为中的一个来配置一个类的方法。(2)需要使用一个算法的不同变体的时候。
(3)算法使用了客户不应该知道的数据的时候。以避免暴露复杂的、与算法相关的数据结构。
(4)一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现的时候。将相关的条件分支移入它们各自的Strategy类中以代替这些条件语句。
3参与者
(1)Strategy:定义所有支持的算法的公共接口。Context使用这个接口来调用某个ConcreteStrategy定义的算法。(2)ConcreteStrategy:实现Strategy接口的某种具体算法。
(3)Context:用一个ConcreteStrategy对象来配置。维护一个对Strategy对象的引用。可定义一个接口来让Stategy访问它的数据。
4类图
5示例
Strategypackage cn.lynn.strategy; public abstract class DBHelper { public abstract void crud(); }ConcreteStrategy
package cn.lynn.strategy; public class JdbcTemplateImpl extends DBHelper { @Override public void crud() { System.out.println("使用JDBC方式操作数据库!"); } }
package cn.lynn.strategy; public class HibernateFactoryImpl extends DBHelper { @Override public void crud() { System.out.println("使用Hibernate持久化方式操作数据库!"); } }Context
package cn.lynn.strategy; public class Context { private DBHelper dbHelper; public Context(DBHelper dbHelper) { this.dbHelper = dbHelper; } public void execute() { dbHelper.crud(); } }Client
package cn.lynn.strategy; public class Client { public static void main(String[] args) { Context context = new Context(new JdbcTemplateImpl()); context.execute(); context = new Context(new HibernateFactoryImpl()); context.execute(); } }Result
使用JDBC方式操作数据库! 使用Hibernate持久化方式操作数据库!
相关文章推荐
- 【转】GoF23种设计模式之行为型模式之策略模式
- GoF23种设计模式之行为型模式之策略模式
- GoF23种设计模式之行为型模式之策略模式
- GoF23种设计模式之行为型模式之迭代器模式
- GoF23种设计模式之行为型模式之访问者模式
- GoF23种设计模式之行为型模式之迭代器模式
- GoF23种设计模式之行为型模式之模板方法
- GoF23种设计模式之行为型模式之模板方法
- GoF23种设计模式之行为型模式之中介者模式
- GoF23种设计模式之行为型模式之模板方法
- 【行为型模式】策略模式(Strategy)之23种java设计模式
- GoF23种设计模式之行为型模式之中介者模式
- GoF23种设计模式之行为型模式之状态模式
- GoF23种设计模式之行为型模式之备忘录模式
- GoF23种设计模式之行为型模式之观察者模式
- 23种设计模式(21)_行为型_策略模式(Stragety Pattern)
- GoF23种设计模式之行为型模式之备忘录模式
- GoF23种设计模式之行为型模式之解释器模式
- 23种设计模式4--行为型模式(策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式)
- GoF23种设计模式之行为型模式之责任链模式