JAVA回调函数简单讲解 CallBack
回調(diào),其實(shí)就是有個(gè)回應(yīng)的那種感覺(jué)。
那么,接下來(lái),我們就用消息推送的場(chǎng)景,簡(jiǎn)簡(jiǎn)單單地講解下回調(diào)函數(shù)的使用。
直接看代碼,
先創(chuàng)建一個(gè)回調(diào)接口,
MessageCallBack
/*** @Author : JCccc* @CreateTime : 2019-2-12* @Description :回調(diào)函數(shù)需要執(zhí)行的內(nèi)容* @Point: Keep a good mood**/public interface MessageCallBack {//成功public void onSccuess(String message, String account);//失敗public void onFailure(String message, String account);//重連等等 }接下來(lái),是模擬消息發(fā)送的客戶端,
MessageClient
/*** @Author : JCccc* @CreateTime : 2019-2-12* @Description :* @Point: Keep a good mood**/ public class MessageClient implements MessageCallBack {private String message;private String account;//重寫回調(diào)接口的方法@Overridepublic void onSccuess(String message, String account) {System.out.println("進(jìn)入回調(diào)函數(shù)--"+"消息推送成功,"+"客戶是:"+account+" 推送的消息是:"+message);}@Overridepublic void onFailure(String message, String account) {System.out.println("進(jìn)入回調(diào)函數(shù)--"+"消息推送失敗,"+"客戶是:"+account+" 推送的消息是:"+message);}public void sendMessage(){System.out.println("開始調(diào)用服務(wù)端進(jìn)行消息的推送");new MessageServer().send(message,account,this);// new MessageServer().send(message,"Mike",new MessageClient(message,account));}public MessageClient(String message, String account) {this.message = message;this.account = account;}}接下來(lái),是模擬消息服務(wù)器:
?MessageServer:
/*** @Author : JCccc* @CreateTime : 2019-2-12* @Description :* @Point: Keep a good mood**/ public class MessageServer {public void send(String message, String account, MessageClient messageClient){try {System.out.println(message+" "+account+"消息推送完畢");messageClient.onSccuess(message,account);} catch (Exception e) {e.printStackTrace();messageClient.onFailure(message,account);}} }最后,寫個(gè)簡(jiǎn)單的對(duì)外接口,提供消息推送,
MessageController
?
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;/*** @Author : JCccc* @CreateTime : 2019-2-12* @Description :* @Point: Keep a good mood**/@RestController public class MessageController {@GetMapping("/sendMessage/test")public void sendMesssage(@RequestParam String account){String message="這是一條測(cè)試消息";MessageClient messageClient=new MessageClient(message,account);messageClient.sendMessage();}}?
現(xiàn)在,代碼碼完了,我們打開postman來(lái)看看整個(gè)跑起來(lái)是怎么回事,
?
運(yùn)行結(jié)果:
?可以看到控制臺(tái)得輸出是
整個(gè)流程下來(lái),應(yīng)用調(diào)用消息客戶端,想要推送一條消息;
? ? ? ? ? ? ? ? ? ? ? ? ?消息客戶端拿到客戶信息和需要推送的消息后,調(diào)用消息服務(wù)端推送消息的方法進(jìn)行推送操作;
? ? ? ? ? ? ? ? ? ? ? ? 消息服務(wù)端進(jìn)行完推送操作后,調(diào)用客戶端的回調(diào)函數(shù),告知推送成功或是失敗。
? 如果要驗(yàn)證下消息推送失敗的回調(diào),也簡(jiǎn)單,把代碼
// int a=2/0;加到消息服務(wù)端推送處,模擬推送過(guò)程出現(xiàn)異常即可。
?
?
好了,簡(jiǎn)單的回調(diào)函數(shù)的應(yīng)用場(chǎng)景介紹就這樣吧, 可以熟悉后自己擴(kuò)展。
總結(jié)
以上是生活随笔為你收集整理的JAVA回调函数简单讲解 CallBack的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【ACM-ICPC 2018 沈阳赛区网
- 下一篇: 简单的oracle备份恢复批处理文件 -