`

【转】GoF23种设计模式之行为型模式之策略模式

阅读更多

1概述

        定义一系列算法,把它们一个个都封装起来,并且让它们可以相互替换。策略模式使得算法可以独立于使用它的客户而发生变化。

2适用性

(1)许多相关的类仅仅是行为存在差异的时候。“策略”提供了一种使用多个行为中的一个来配置一个类的方法。
(2)需要使用一个算法的不同变体的时候。
(3)算法使用了客户不应该知道的数据的时候。以避免暴露复杂的、与算法相关的数据结构。
(4)一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现的时候。将相关的条件分支移入它们各自的Strategy类中以代替这些条件语句。    

3参与者

(1)Strategy:定义所有支持的算法的公共接口。Context使用这个接口来调用某个ConcreteStrategy定义的算法。
(2)ConcreteStrategy:实现Strategy接口的某种具体算法。
(3)Context:用一个ConcreteStrategy对象来配置。维护一个对Strategy对象的引用。可定义一个接口来让Stategy访问它的数据。

4类图

5示例

Strategy
  1. package cn.lynn.strategy;  
  2.   
  3. public abstract class DBHelper {  
  4.   
  5.     public abstract void crud();  
  6.   
  7. }  
ConcreteStrategy
  1. package cn.lynn.strategy;  
  2.   
  3. public class JdbcTemplateImpl extends DBHelper {  
  4.   
  5.     @Override  
  6.     public void crud() {  
  7.         System.out.println("使用JDBC方式操作数据库!");  
  8.     }  
  9.   
  10. }  
  1. package cn.lynn.strategy;  
  2.   
  3. public class HibernateFactoryImpl extends DBHelper {  
  4.   
  5.     @Override  
  6.     public void crud() {  
  7.         System.out.println("使用Hibernate持久化方式操作数据库!");  
  8.     }  
  9.   
  10. }  
Context
  1. package cn.lynn.strategy;  
  2.   
  3. public class Context {  
  4.   
  5.     private DBHelper dbHelper;  
  6.   
  7.     public Context(DBHelper dbHelper) {  
  8.         this.dbHelper = dbHelper;  
  9.     }  
  10.       
  11.     public void execute() {  
  12.         dbHelper.crud();  
  13.     }  
  14. }  
Client
  1. package cn.lynn.strategy;  
  2.   
  3. public class Client {  
  4.   
  5.     public static void main(String[] args) {  
  6.         Context context = new Context(new JdbcTemplateImpl());  
  7.         context.execute();  
  8.         context = new Context(new HibernateFactoryImpl());  
  9.         context.execute();  
  10.     }  
  11.   
  12. }  
Result
  1. 使用JDBC方式操作数据库!  
  2. 使用Hibernate持久化方式操作数据库!  
分享到:
评论

相关推荐

    GOF23种设计模式

    GOF(GoF)23种设计模式,是由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大神在他们的著作《设计模式:可复用面向对象软件的基础》中提出的,这些模式分为创建型、结构型和行为型三大类。...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    GoF(Gang of Four)所提出的23种设计模式,被认为是面向对象编程中最核心的设计原则之一。这些模式可以帮助开发者解决常见的编程问题,并提高代码的可复用性和可维护性。 #### 创建型模式 创建型模式关注的是对象...

    设计模式精解-GoF23种设计模式解析附C++实现源码

    GoF(Gang of Four)23种设计模式是软件开发中的经典,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位专家在《设计模式:可复用面向对象软件的基础》一书中提出。这些模式为程序员提供了一种通用...

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    GoF(Gang of Four)所提出的23种设计模式被视为面向对象设计的核心内容之一。本文旨在深入解析这些设计模式,并通过C++实现来帮助读者更好地理解和应用这些模式。 #### 1. 创建型模式 创建型模式关注的是对象的...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    这本书详细阐述了23种设计模式,这些模式被广泛应用于各种编程语言,包括C++。 1. **创建型模式**:这类模式主要关注对象的创建过程,它们提供了一种在不指定具体类的情况下创建对象的方法,使得系统更加灵活和可...

    GOF23种设计模式C#实现

    GOF,即 Gamma, Erich, Richard Helm, Ralph Johnson 和 John Vlissides 四位大师,在1994年出版的《设计模式:可复用面向对象软件的基础》一书中,提出了23种设计模式。这些模式被广泛应用于各种面向对象编程语言,...

    GOF 23种设计模式

    《GOF 23种设计模式》是软件工程领域中极具影响力的一本书,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师合著,因此也被称为“Gang of Four”(GOF)的设计模式。这本书详细阐述了在面向...

    GoF 23种设计模式解析及实现源码

    GoF(Gang of Four)23种设计模式是软件工程中的经典,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者在《设计模式:可复用面向对象软件的基础》一书中提出。这些模式为创建可维护、可扩展...

    GOF23种设计模式源码

    这23种设计模式涵盖了创建型、结构型和行为型三大类别,为解决常见的编程问题提供了标准的解决方案。 1. **创建型模式**(Creational Patterns): - **单例模式**(Singleton):确保一个类只有一个实例,并提供...

    设计模式精解-GoF 23种设计模式解析附C++实现源码 完整版

    GoF的23种设计模式可以分为三大类:创建型、结构型和行为型模式。 1. **创建型模式**: - 单例模式:保证一个类只有一个实例,并提供全局访问点。 - 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化...

    GOF23种设计模式精解

    ### GOF23种设计模式精解 #### 引言 设计模式是在软件工程领域内广泛应用的一种编程思想,它能够帮助开发者解决常见的软件设计问题。《GOF23种设计模式精解》这本书深入探讨了由Erich Gamma等人在1994年出版的经典...

    人间万象“23式”-GOF23种设计模式[归类].pdf

    GOF23种设计模式由Gang of Four(GoF)在他们的经典著作《设计模式:可复用面向对象软件的基础》中提出。这些模式分为三大类:创建型、结构型和行为型。 1. **创建型模式**: - **工厂模式(Factory)**:提供一个...

Global site tag (gtag.js) - Google Analytics