Java函数式编程实现策略模式

Java函数式编程实现策略模式我们学习 Java8 的 lambda 的时候一开始都会接触这样子的代码 这样子可以使我们的代码更简洁 publicstatic String args old Calculatorad newAdd add calculate 1 2 lambda Calculatormi a b

我们学习Java8的lambda的时候一开始都会接触这样子的代码,这样子可以使我们的代码更简洁。

 public static void main(String[] args) { // old Calculator 
  
    add = new Add(); add.calculate(1, 2); // lambda Calculator 
   
     minus = (a, b) -> { return a - b; }; minus.calculate(1, 2); } static class Add implements Calculator 
    
      { @Override public Integer calculate(Integer t1, Integer t2) { return t1 + t2; } } 
     
    
  

实现策略模式呢,是创建不同的实现类,封装不同的方法,使得这些实现可以相互替换。这里我们可以通过传进一个函数代替以前的实现类来实现策略模式

 public int service(int a, int b) { return this.cal(this::add, a, b); } public int add(int a, int b) { return a + b; } public int minus(int a, int b) { return a - b; } public 
   
     T cal(Calculator 
    
      cal, T t1, T t2) { T result = cal.calculate(t1, t2); return result; } 
     
   




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228014.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午8:01
下一篇 2026年3月16日 下午8:01


相关推荐

  • 做java开发的前景何在

    做java开发的前景何在做了几年的it研发工程师,到现在还从事coding,尤其我本身是女生,工作也有5年多了,一直从事coding,用过很多的开发语言,但是好像没有精通。所以找工作不知道该用哪种语言找,于是乎瞎碰,没有目标的乱碰。呵呵。曲折的工作经历,中间休息了两年没有开发,搞了半年的需求分析,后来由于不喜欢新的工作环境离职,现在又走上了老路coding,本身我觉得没有什么,但是在现在的公司里越来越觉得做研发尤其是…

    2022年7月14日
    19
  • 『n8n』对接豆包、千问、文心、Kimi等大模型

    『n8n』对接豆包、千问、文心、Kimi等大模型

    2026年3月12日
    2
  • 【Android 】零基础到飞升 | ExpandableListView(可折叠列表)的基本使用

    【Android 】零基础到飞升 | ExpandableListView(可折叠列表)的基本使用2.5.5ExpandableListView(可折叠列表)的基本使用本节引言:本节要讲解的Adapter类控件是ExpandableListView,就是可折叠的列表,它是ListView的子类,在ListView的基础上它把应用中的列表项分为几组,每组里又可包含多个列表项。至于样子,类似于QQ联系人列表,他的用法与ListView非常相似,只是ExpandableListVivew显示的列表项需由ExpandableAdapter提供。下面我们来学习这个控件的基本使用!官方API:Exp

    2022年6月15日
    23
  • tcping安装使用说明及对比telnet命令

    tcping安装使用说明及对比telnet命令下载tcping.exe放在然后就可以使用tcxpingwww.baidu.com空格80测试是否成功了tcping.exe下载地址,见我的资源————————–下面是telnet—————————-telnet使用方式cmd进入命令窗口,如想测试www.baidu….

    2022年6月23日
    25
  • JS数组合并(5种)

    JS数组合并(5种)前言项目过程中,经常会遇到JS数组合并的情况,时常为这个纠结。这里整理一下。简单而实用的for最容易想到的莫过于for了。会变更原数组,当然也可以写成生成新数组的形式。letarr=[1,2]letarr2=[3,4]for(letiinarr2){arr.push(arr2[i])}console.log(arr)//[1,2,3,4]arr.concat(arr2)会生成新的数组。letarr=[1,2]let

    2022年6月30日
    48
  • PCA降维算法总结以及matlab实现PCA(个人的一点理解)

    PCA降维算法总结以及matlab实现PCA(个人的一点理解)PCA的一些基本资料最近因为最人脸表情识别,提取的gabor特征太多了,所以需要用PCA进行对提取的特征进行降维。本来最早的时候我没有打算对提取的gabor特征进行降维,但是如果一个图像时64*64,那么使用五个尺度八个方向的gabor滤波器进行滤波,这样提取的特征足足有64*64*5*8这么多,如果图像稍微大一点,比如12

    2025年7月25日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号