本文實例講述了Java基於命令模式實現郵局發信功能。分享給大家供大家參考,具體如下:
一. 模式定義
命令模式,將來自客戶端的請求封建為一個對象,無須了解這個請求激活的動作或有關接受這個請求的處理細節。命令模式的根本目的在於將"請求者"與"實現者"之間解耦。
二. 模式舉例
1 模式分析
我們藉用郵局發信來說明這一模式。
2 命令模式靜態類圖
3 代碼示例
3.1信件接收者接口一IReceiver
package com.demo.receiver;/** * 信件接收者接口* * @author * */public interface IReceiver { /** * 收件人收到信件讀取* * @param message */ public void readMail(String message);}3.2信件接收者一Receiver
package com.demo.receiver;/** * 信件接收者* * @author * */public class Receiver implements IReceiver { /** * 收件人收到信件讀取* * @param message */ public void readMail(String message) { System.out.println("收件人讀取信件:" + message); }}3.3郵局接口一IPost
package com.demo.command;/** * 郵局接口* * @author * */public interface IPost { /** * 郵局發送信件* * @param message */ public void sendMail(String message);}3.4郵局實現一Post
package com.demo.command;import com.demo.receiver.IReceiver;/** * 郵局實現類* * @author * */public class Post implements IPost { // 收信人對象實例private final IReceiver receiver; /** * 構造方法傳入收信人對象實例* * @param receiver */ public Post(IReceiver receiver) { this.receiver = receiver; } /** * 郵局發送信件* * @param message */ @Override public void sendMail(String message) { System.out.println("郵局將信件發給收信人..."); // 郵局發送信件給收信人this.receiver.readMail(message); }}3.5消息發送者一Invoker
package com.demo.invoker;import com.demo.command.IPost;/** * 發信人* * @author * */public class Invoker { // 郵局私有屬性private IPost post; /** * 設置郵局對象實例* * @param post */ public void setPost(IPost post) { this.post = post; } /** * 發信人發送信件* * @param message */ public void postMail(String message) { System.out.println("發信人投遞信件給郵局..."); this.post.sendMail(message); }}3.6讓郵局開始工作一Client
package com.demo;import com.demo.command.IPost;import com.demo.command.Post;import com.demo.invoker.Invoker;import com.demo.receiver.Receiver;/** * 客戶端應用程序* * @author * */public class Client { /** * @param args */ public static void main(String[] args) { // 創建一個收信人對象實例Receiver receiver = new Receiver(); // 創建一個郵局對象實例傳入收信人對象實例IPost post = new Post(receiver); // 創建一個發信人對象實例傳入郵局對象實例Invoker invoker = new Invoker(); // 設置郵局invoker.setPost(post); // 發信人開始發送信息! ! ! invoker.postMail("你好!好久不見,最近工作忙嗎?"); }}4 運行結果
發信人投遞信件給郵局...
郵局將信件發給收信人...
收件人讀取信件:你好!好久不見,最近工作忙嗎?
三. 該模式設計原則
1"開-閉"原則
2最少知識原則
四. 命令模式靜態類圖
更多java相關內容感興趣的讀者可查看本站專題:《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。