函数式编程-Function 在实际环境的使用

 1 package com.example.springstudy.test.functions;
 2 
 3 import com.example.springstudy.entity.UserInfo;
 4 
 5 import java.util.UUID;
 6 import java.util.function.Function;
 7 
 8 /**
 9  * @Author: GuoDong
10  * @Description: function其实就是给你一个T(入参),你经过处理之后,给你一个R(出参),其实就是参数转换,和Consumer很类似
11  * @Date 2023-02-07 09:55:02
12  * @Version 1.0
13  **/
14 public class FunctionTest {
15 
16 
17     /**
18      * 这里一般是提供入参方和结果处理方
19      * @param function
20      * @return
21      */
22     public UserInfo handler(Function<String, UserInfo> function){
23         // 这里提供入参 name
24         String name = UUID.randomUUID().toString();
25         UserInfo userInfo = function.apply(name);
26         System.out.println(userInfo);
27         return userInfo;
28     }
29 
30     public static void main(String[] args) {
31         AAAA aaaa = new AAAA();
32         // 调用方式是 bean.方法名()
33         Function<String, UserInfo> function = aaaa::convert;
34 
35         FunctionTest functionTest = new FunctionTest();
36         functionTest.handler(function);
37     }
38 
39 }
40 
41 
42 class AAAA{
43 
44 
45     /**
46      * 这里是参数转换方
47      * 处理逻辑,入参和出参和Function约束的入参和出参保持一致
48      * 其实这里相当于function的实现,也就是convert。
49      * @param name
50      * @return
51      */
52     public UserInfo convert(String name){
53         UserInfo userInfo = new UserInfo();
54         userInfo.setPhone("166667");
55         userInfo.setPassWord("34999");
56         userInfo.setUserName(name);
57         return userInfo;
58     }
59 
60 }

还有一种比较简洁的写法,如下所示:Function函数里面是提供数据的,外部是加工数据的,外部是处理逻辑的,可以在内部里面获取外部处理好的结果。

public class FuncationHandler {

    public void handler(Function<UserInfo, String> function){
        UserInfo userInfo = new UserInfo();
        userInfo.setUserName("guodong");
        userInfo.setPhone("17311227788");
        String temp = function.apply(userInfo);
        System.out.println("返回处理加工结果--->:" + temp);
    }

    public static void main(String[] args) {
        FuncationHandler funcationHandler = new FuncationHandler();
        funcationHandler.handler(data ->{
            UserInfo userInfo = data;
            System.out.println(userInfo);
            return "返回处理加工结果:getPhone:"+data.getPhone() + ",getUserName:"+ data.getUserName();
        });
    }


}

总结:function其实就是给你一个T(入参),你经过处理之后,给你一个R(出参),其实就是参数转换,和Consumer很类似。

 

posted @ 2023-02-07 10:35  郭慕荣  阅读(41)  评论(0编辑  收藏  举报