`
huqingyong_eye
  • 浏览: 36654 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

1.1、 策略模式

阅读更多

三个角色:
环境(Context)角色:持有一个Strategy类的引用。
抽象策略(Strategy)角色:通常由一个接口或者抽象类实现,此角色给出所有的具体策略类所需的接口。
具体策略(ConcreteStrategy)角色:包装相关算法和行为

为了帮助理解,我们举例来说明。
我们的程序要实现加密功能。加密有一个加密算法,加密算法有很多种,比如MD5,DES等,我们的程序需要实现这个功能,就是可以让用户选择不同的加密算法进行加密。
这个过程我们可以用Strategy模式来实现。
环境角色:

/**
* Context
*/
class EncryptContext {
    //策略对象
    EncryptStrategy strategy;
       
    public EncryptContext(EncryptStrategy strategy) {
        this.strategy = strategy;
    }    
    //执行具体的策略行为
    public void encrypt() {
        strategy.encrypt();
    }    
}



抽象策略角色:
/**
* Strategy & subclass
*/
interface EncryptStrategy {
    public void encrypt();
}


具体抽象策略角色:

//Strategy'subclass
class DesStrategy implements EncryptStrategy {
    public void encrypt() {
        System.out.println("encrypt by DES algorithm.");
        //TODO DES algorithm HERE。这里我们没给出具体的算法。
    }
}

//Strategy'subclass
class MD5Strategy implements EncryptStrategy {
    public void encrypt() {
        System.out.println("encrypt by MD5 algorithm.");
        //TODO MD5 algorithm HERE。这里我们没给出具体的算法。
    }
}


下面我们使用此策略
public class Client {
    /**
     * Test Strategy Pattern
     * 
     */
    public static void main(String[] args) {
        //2种不同的策略       
        //使用DES策略(算法)
        EncryptContext context = new EncryptContext(new DesStrategy());
        context.encrypt();        
        //使用MD5策略(算法)
        context = new EncryptContext(new MD5Strategy());
        context.encrypt();
        
    }
}
  • 大小: 3.8 KB
分享到:
评论

相关推荐

    基于设计模式的画图程序

    至少在其中运用 3 种模式,其中涉及到的模式有装饰模式、策略模式、桥梁模式三种。 1.2 画图基本要求 能实现基本图形的绘制功能 1.3 画图高级要求 实现图形的操作(如选取、移动、放大、缩小、改变颜色、改变线形等...

    基于设计模式的绘图程序

    至少在其中运用 3 种模式,其中涉及到的模式有装饰模式、策略模式、桥梁模式三种。 1.2 画图基本要求 能实现基本图形的绘制功能 1.3 画图高级要求 实现图形的操作(如选取、移动、放大、缩小、改变颜色、改变线形等...

    java设计模式

    18.3.4 策略模式的注意事项 18.4 策略模式的扩展 18.5 最佳实践 第19章 适配器模式 19.1 业务发展—上帝才能控制 19.2 适配器模式的定义 19.3 适配器模式的应用 19.3.1 适配器模式的优点 19.3.2 适配器模式的应用 ...

    Java23种设计模式

    目录 1. 设计模式 3 1.1 创建型模式 4 1.1.1 工厂方法 4 1.1.2 抽象工厂 6 1.1.3 建造者模式 10 1.1.4 单态模式 13 1.1.5 原型模式 15 ...1.3.9 策略模式 61 1.3.10 模板方法 63 1.3.11 访问者模式 65

    Java23种设计模式(总结)

    1. 设计模式 2 1.1 创建型模式 3 1.1.1 工厂方法 3 1.1.2 抽象工厂 5 1.1.3 建造者模式 9 1.1.4 单态模式 12 1.1.5 原型模式 ...1.3.9 策略模式 1.3.10 模板方法 1.3.11 访问者模式

    Java设计模式-图解-附代码

    1.1 创建型模式 4 1.1.1 工厂方法 4 1.1.2 抽象工厂 6 1.1.3 建造者模式 10 1.1.4 单态模式 13 1.1.5 原型模式 15 1.2 结构型模式 17 ...1.3.9 策略模式 61 1.3.10 模板方法 63 1.3.11 访问者模式 65

    《java的23种设计模式》

    1. 设计模式 3 1.1 创建型模式 4 1.1.1 工厂方法 4 1.1.2 抽象工厂 6 1.1.3 建造者模式 10 1.1.4 单态模式 13 1.1.5 原型模式 15 ...1.3.9 策略模式 61 1.3.10 模板方法 63 1.3.11 访问者模式 65

    Java设计模式整理

    java设计模式word整理,付代码说明,时候java进阶选手,欢迎选购! 目录 1 1. 设计模式 2 1.1 创建型模式 2 1.1.1 工厂方法 2 1.1.2 抽象工厂 4 ...1.3.9 策略模式 40 1.3.10 模板方法 42 1.3.11 访问者模式 43

    JAVA的23种设计模式实例

    JAVA的23种设计模式实例,如三大类创建型模式、结构型模式、行为型模式,细分为23种具体模式1. 设计模式 3 1.1 创建型模式 4 1.1.1 工厂方法 4 ...1.3.9 策略模式 61 1.3.10 模板方法 63 1.3.11 访问者模式 65

    Java设计模式

    1. 设计模式 3 1.1 创建型模式 4 1.1.1 工厂方法 4 1.1.2 抽象工厂 6 1.1.3 建造者模式 10 1.1.4 单态模式 13 1.1.5 原型模式 15 1.2 结构型模式 17 ...1.3.9 策略模式 61 1.3.10 模板方法 63 1.3.11 访问者模式 65

    设计模式课程设计- 画 图 程 序.doc

    至少在其中运用 6 种模式,其中涉及到的模式有装饰模式、策略模式、桥梁模式三种。 1.2 画图基本要求 能实现基本图形的绘制功能 1.3 画图高级要求 实现图形的操作(如选取、移动、放大、缩小、改变颜色、改变线形等...

    《设计模式实训教程》【PPT+类图与代码+样章】

    5.2.9策略模式实例之电影票打折 5.2.10模板方法模式实例之数据库操作 5.2.11访问者模式实例之奖励审批 5.3实训练习 第6章模式联用与综合实例实训 6.1设计模式补充知识 6.1.1反射与配置文件 6.1.2GRASP模式 ...

    Java设计模式,并加上个人理解

    6. 策略模式 (Strategy Pattern) 7. 适配器模式 (Adapter Pattern) 8. 模板方法模式 (Template Pattern) 9. 建造者模式 (Builder Pattern) 10. 原型模式 (Prototype Pattern) 11. 组合模式 (Composite ...

    设计模式,软件开发者必读

    4.9 STRATEGY 策略模式 96 4.10 TEMPLATE METHOD模板方法 100 4.11 VISITOR 访问者模式 103 C++高级编程 108 5.1 多态及其实现机制 108 5.2 虚函数和多态性(一) 109 5.3 虚函数和多态性(二) 114 5.4 C++中的纯虚函数...

    Delphi模式编程第一分卷

    24.3.1 策略模式在酒店管理系统中的应用 24.3.2 范例小结 第25章 模板方法模式(Template Method) 25.1 模式解说 25.2 结构与用法 25.2.1 模式结构 25.2.2 代码模板 25.2.3 问题讨论 25.3 范例与实践 ...

    Delphi模式编程第二分卷

    24.3.1 策略模式在酒店管理系统中的应用 24.3.2 范例小结 第25章 模板方法模式(Template Method) 25.1 模式解说 25.2 结构与用法 25.2.1 模式结构 25.2.2 代码模板 25.2.3 问题讨论 25.3 范例与...

    设计模式可复用面向对象软件的基础.zip

    2.3.3 策略模式 29 2.4 修饰用户界面 29 2.4.1 透明围栏 29 2.4.2 Monoglyph 30 2.4.3 Decorator 模式 32 2.5 支持多种视感标准 32 2.5.1 对象创建的抽象 32 2.5.2 工厂类和产品类 33 2.5.3 Abstract Factory模式 35...

    设计模式--C++

    2.3.3 策略模式 29 2.4 修饰用户界面 29 2.4.1 透明围栏 29 2.4.2 Monoglyph 30 2.4.3 Decorator 模式 32 2.5 支持多种视感标准 32 2.5.1 对象创建的抽象 32 2.5.2 工厂类和产品类 33 2.5.3 Abstract Factory 模式 ...

Global site tag (gtag.js) - Google Analytics