本文实例讲述了java基于命令模式实现邮局发信功能。分享给大家供大家参考,具体如下:
一. 模式定义
命令模式,将来自客户端的请求封建为一个对象,无须了解这个请求激活的动作或有关接受这个请求的处理细节。命令模式的根本目的在于将"请求者"与"实现者"之间解耦。
二. 模式举例
1 模式分析
我们借用邮局发信来说明这一模式。
2 命令模式静态类图
3 代码示例
3.1信件接收者接口一ireceiver
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package com.demo.receiver;
/**
* 信件接收者接口
*
* @author
*
*/
public interface ireceiver {
/**
* 收件人收到信件读取
*
* @param message
*/
public void readmail(string message);
}
|
3.2信件接收者一receiver
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package com.demo.receiver;
/**
* 信件接收者
*
* @author
*
*/
public class receiver implements ireceiver {
/**
* 收件人收到信件读取
*
* @param message
*/
public void readmail(string message) {
system.out.println( "收件人读取信件:" + message);
}
}
|
3.3邮局接口一ipost
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package com.demo.command;
/**
* 邮局接口
*
* @author
*
*/
public interface ipost {
/**
* 邮局发送信件
*
* @param message
*/
public void sendmail(string message);
}
|
3.4邮局实现一post
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
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程序设计有所帮助。
原文链接:https://blog.csdn.net/chengqiuming/article/details/70139489