良许Linux教程网 干货合集 讲解一下Java设计模式之策略模式

讲解一下Java设计模式之策略模式

策略模式:针对一组算法,将每一个算法封装到具有共同接口的独立的类中,使得它们可以互换。

u=2033150090,3817057770&fm=15&gp=0

1.什么是策略模式

定义一系列算法,把它们一个个封装起来,并且使他们可以相互替换。

通俗的讲,实现同一个功能,有多种方法或策略。可以把这些方法或策略提取并封装起来。需要使用哪种方法,传对应的对象进来就行。

2.如何实现

1)定义一个策略接口,该接口定义若干抽象方法。

2)具体策略,实现策略接口,并实现接口中定义的方法。

3)封装调用类,持有策略接口的引用。当用户需要完成某项功能时,只需向这个类传入相应的策略对象,并调用方法即可。

3.代码实现

以文件的加密解密为例做说明。

1)策略接口,定义策略名

/**
* 策略接口
*/
public interface EncodeStrategy {
   /**
    * 加密算法
    * @param file
    */
   public abstract void encryptFile(File file);
   /**
    * 解密算法
    * @param file
    * @return
    */
   public abstract String decryptFile(File file);
}

2)具体策略类1

/**
* 具体策略
*/
public class AESEncode implements EncodeStrategy {
   @Override
   public void encryptFile(File file) {
       //省略具体细节
   }
   @Override
   public String decryptFile(File file) {
       //省略具体细节
       return null;
   }
}

具体策略类2

public class Base64Encode implements EncodeStrategy {
   @Override
   public void encryptFile(File file) {
       //省略具体细节
   }
   @Override
   public String decryptFile(File file) {
       //省略具体细节
       return null;
   }
}

3)封装调用类

/**
* 封装调用类,需要用到具体策略,只需传入其对象即可
*/
public class FileEncode{
   /**
    * 策略接口的引用
    */
   EncodeStrategy strategy;
   public FileEncode(EncodeStrategy strategy){
       this.strategy = strategy;
   }
   //根据传入的具体策略对象,调用其方法
   public void encryptFile(File file) {
       strategy.encryptFile(file);
   }
   //根据传入的具体策略对象,调用其方法
   public String decryptFile(File file) {
       return strategy.decryptFile(file);
   }
}

4)测试代码

public class TestStrategy {
   public static void main(String args []){
       File file = new File("d:\test.txt");
       //调用策略1 实现加密
       FileEncode fileEncode = new FileEncode(new AESEncode());
       fileEncode.encryptFile(file);
       //调用策略2 实现加密
       fileEncode = new FileEncode(new Base64Encode());
       fileEncode.encryptFile(file);
   }
}
public class TestStrategy {
   public static void main(String args []){
       File file = new File("d:\test.txt");
       //调用策略1 实现加密
       FileEncode fileEncode = new FileEncode(new AESEncode());
       fileEncode.encryptFile(file);
       //调用策略2 实现加密
       fileEncode = new FileEncode(new Base64Encode());
       fileEncode.encryptFile(file);
   }
}

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部