日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java8 lambda表达式实现自定义用户组件,Don't Repeat Yourself

發(fā)布時間:2025/3/8 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java8 lambda表达式实现自定义用户组件,Don't Repeat Yourself 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標準>>>

一、用戶組件的功能 ?

?????使用java8 lambda表達式實現(xiàn)實現(xiàn)世界的一個例子:用戶組件。此用戶組件有以下幾個操作:獲取用戶列表,獲取單個用戶,增加用戶,刪除用戶,更新用戶。所有的操作都是使用UserRequest對象并返回一個UserResponse對象。

? ? ? ?在各個操作中,需要在方法執(zhí)行前進行請求合法性驗證,方法執(zhí)行后進行特殊的響應處理,檢查所有的響應特性
執(zhí)行日志記錄或其他操作。

? ? ? 在原來的處理方式中,需要在每個操作中都把要執(zhí)行的請求方法包括在至少一個try-catch語句塊中。在java8中,可以創(chuàng)建一個的方法統(tǒng)一處理方法執(zhí)行前后的操作,如源代碼中的callComponent方法,使代碼更加簡單,更少的代碼重復。

二、代碼樣例

? ? 1.定義一個用戶類User

? ? 2.定義用戶組件的接口UserComponent,UserRequest,UserResponse

? ? 3.使用lambda表達式實現(xiàn)用戶組件的接口UserComponentImpl

? ? 4.實現(xiàn)Adapter類UserComponentAdapter

? ? 5.創(chuàng)建測試類UserComponentTest

public class User {Integer id;String name;Integer age;User() {}User(int id, String name, int age) {this.id = id;this.name=name;this.age = age;}public String toString() {return "" + id + "-" + name + "-" + age;} } public interface UserComponent {UserResponse fetchAllUsers(UserRequest req);UserResponse fetchUser(UserRequest req);UserResponse deleteUser(UserRequest req);UserResponse updateUser(UserRequest req);UserResponse insertUser(UserRequest req); } import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors;public class UserComponentImpl implements UserComponent {List<User> users = new ArrayList<User>();public UserResponse fetchAllUsers(UserRequest req) {return new UserResponse(users);}public UserResponse fetchUser(UserRequest req) {return new UserResponse(users.stream().filter(u -> u.id.equals(req.user.id)).collect(Collectors.toList()));}public UserResponse deleteUser(UserRequest req) {users = users.stream().filter(u -> (!u.id.equals(req.user.id))).collect(Collectors.toList());return new UserResponse(true);}public UserResponse updateUser(UserRequest req) {List<User> list = users.stream().filter(u -> u.id.equals(req.user.id)).collect(Collectors.toList());if (list.size() > 0) {User user = list.get(0);user.name = req.user.name;user.age = req.user.age;return new UserResponse(true);}return new UserResponse(false);}public UserResponse insertUser(UserRequest req) {users.add(req.user);return new UserResponse(true);} } import java.io.IOException; import java.util.List; import java.util.function.Function;public class UserComponentAdapter {UserComponent uc = new UserComponentImpl();UserResponse callComponent(UserRequest request,Function<UserRequest, UserResponse> func) {try {// 驗證請求的合法性UserResponse response = func.apply(request);// 特殊的響應處理,檢查所有的響應特性// 執(zhí)行日志記錄和/或其他操作return response;} catch (Exception e) {e.printStackTrace();// 進行異常處理return new UserResponse(true);}}List<User> fetchAllUsers() throws IOException {return callComponent(new UserRequest(), uc::fetchAllUsers).users;}User fetchUser(Integer id) throws IOException {return callComponent(new UserRequest(new User(id, "", 0)),uc::fetchUser).users.get(0);}boolean deleteUser(Integer id) throws IOException {return callComponent(new UserRequest(new User(id, "", 0)),uc::deleteUser).success;}boolean updateUser(User user) throws IOException {return callComponent(new UserRequest(user), uc::updateUser).success;}boolean insertUser(User user) throws IOException {return callComponent(new UserRequest(user), uc::insertUser).success;} } import java.io.IOException;public class UserComponentTest {public static void main(String[] args) throws IOException {UserComponentAdapter uca = new UserComponentAdapter();uca.insertUser(new User(1, "張三", 12));uca.insertUser(new User(2, "李四", 21));uca.insertUser(new User(3, "王五", 32));uca.insertUser(new User(4, "趙六", 43));System.out.println(uca.fetchAllUsers());System.out.println(uca.fetchUser(2));System.out.println(uca.updateUser(new User(3, "王五五", 55)));System.out.println(uca.deleteUser(4));System.out.println(uca.fetchAllUsers());} } public class UserRequest {User user;public UserRequest() {}public UserRequest(User user) {this.user = user;} } import java.util.List;public class UserResponse {List<User> users;boolean success = true;public UserResponse(boolean success) {this.success=success;}public UserResponse(List<User> users) {this.users = users;} }

三、參考資料

http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html.

http://www.dreamsyssoft.com/java-8-lambda-tutorial/

轉(zhuǎn)載于:https://my.oschina.net/cloudcoder/blog/215113

總結(jié)

以上是生活随笔為你收集整理的java8 lambda表达式实现自定义用户组件,Don't Repeat Yourself的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。