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

本文介绍了一种使用策略模式来实现不同密钥对生成算法的设计方案。通过定义一个接口IKeyPairGenerable并实现不同的具体生成器如DesKeyPairGenerator、RsaKeyPairGenerator等,KeyPairManager可以根据需求选择不同的生成器来创建密钥对。
//密钥对生成接口
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 类。     

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值