`

设计模式快速参考-策略模式

阅读更多
//密钥对生成接口
interface IKeyPairGenerable{
   KeyPair create();
}

class KeyPair{
}

class DesKeyPairGenerator implements IKeyPairGenerable{
}

class IdeaKeyPairGenerator implements IKeyPairGenerable{
}

class RsaKeyPairGenerator implements IKeyPairGenerable{
}

class KeyPairManager{
   private IKeyPairGenerable generator;
   private List keyPairList = new Arraylist();
   public void setGenerator(IKeyPairGenerable generator){
      this.generator = generator;
   }
   public KeyPair create(){
      KeyPair keyPair = null;
      if(null != generator){
         keyPair = generator.create();
         keyPairList.add(keyPair);
      }
      return keyPair;
   }
}
 


Client:

 

IKeyPairGenerable desGenerator =  new DesKeyPairGenerator();
IKeyPairGenerable rsaGenerator =   new RsaKeyPairGenerator();
IKeyPairGenerable ideaGenerator =  new IdeaKeyPairGenerator();

KeyPairManager manager = new KeyPairManager();

//使用 DES 算法生成密钥
manager.setGenerator(desGenerator);
KeyPair keyPair = manager.create();

//使用 RSA 算法生成密钥
manager.setGenerator(rsaGenerator);
KeyPair keyPair = manager.create();

 


     可以看出,KeyPairManager 仅仅依赖于接口 IKeyPairGeneratble, 改变密钥对生成算法不改变 KeyPairManager 类。     

    策略模式一般用来封装算法的不同实现。

分享到:
评论

相关推荐

    设计模式--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 模式 ...

    基于Android设计模式之--SDK源码之策略模式的详解

    本篇文章介绍了,基于Android设计模式之--SDK源码之策略模式的详解。需要的朋友参考下

    javascript设计模式--策略模式之输入验证

    策略模式中的策略就是一种算法或者业务规则,将这些策略作为函数进行封装,并向外提供统一的调用执行,本文给大家介绍javascript设计模式--策略模式之输入验证,需要的朋友参考下

    设计模式之策略模式源码

    这个工程是设计模式中的策略模式的源码工程,该工程主要以一个简单的收银系统来体现策略模式的思想,仅供参考。 注:该工程包含了计算器-简单工厂模式的相关代码

    Java 设计模式 策略模式

    代码为博客的例子,详细讲解参考:http://blog.csdn.net/lmj623565791/article/details/24116745 有问题请留言

    设计模式文档 chm

    设计模式参考文档 创建模式: 设计模式之Factory 设计模式之Prototype(原型) 设计模式之Builder 设计模式之Singleton(单态) 结构模式: 设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计...

    设计模式:可复用面向对象软件的基础--详细书签版

    因此我们欢迎广大读者的批评与指正,无论从书中采用的实例、参考,还是我们遗漏的已知应用,或应该包含的设计模式等方面。你可以通过Addison-Wesley写信给我们,或发送电子邮件到:design-patterns@cs.uiuc.edu。你...

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

    1.2 Smalltalk MVC中的设计模式 1.3 描述设计模式 1.4 设计模式的编目 1.5 组织编目 1.6 设计模式怎样解决设计问题 1.7 怎样选择设计模式 1.8 怎样使用设计模式 第二章 实例研究:设计一个文档编辑器 2.1 设计问题...

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    设计模式参考《大话设计模式》 工厂简单模式 创造型模式 工厂方法模式 抽象工厂模式 原型模式 建造者模式 单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为...

    研磨设计模式(完整带书签).part2.pdf

    也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 适配器模式(Adapter) 第5章 单例模式(Singleton) 第6章 工厂方法模式(Factory Method) 第7章...

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

    书名: 设计模式可复用面向对象软件的基础 英文原书名: Design Patterns:Elements of Reusable Object-Oriented software 作者: Erich Gamma 等 译者: 李英军 马晓星 蔡敏 刘建中 书号: 7-111-07575-7 页码: 254 定价...

    中南大学-设计模式-实验二

    中南大学设计模式实验2,关于策略模式,命令模式,观察者模式等等,有每个实验具体事例环境的类图和实例代码。友情提示,本资源仅作参考。

    研磨设计模式-part2

    也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 适配器模式(Adapter) 第5章 单例模式(Singleton) 第6章 工厂方法模式(Factory Method) 第7章...

    研磨设计模式-part4

    也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 适配器模式(Adapter) 第5章 单例模式(Singleton) 第6章 工厂方法模式(Factory Method) 第7章...

    研磨设计模式-part3

    也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 适配器模式(Adapter) 第5章 单例模式(Singleton) 第6章 工厂方法模式(Factory Method) 第7章...

    软件设计模式实验报告

    是软件设计模式的大部分模式设计方法,里面都有介绍具体的实例供大家参考。

    关于.NET Framework中的设计模式--应用策略模式为List排序

    本篇文章,小编将为大家介绍关于.NET Framework中的设计模式--应用策略模式为List排序,有需要的朋友可以参考一下

    C++设计模式(Design Pattern)范例源代码

    23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm” 供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) ...

    设计模式 GOF 23

    本书设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好,表达清楚的软件设计模式,这些模式在实用环境下有特别有用...

    《设计模式》中文版(23个设计模式的介绍与运用)

    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...

Global site tag (gtag.js) - Google Analytics