java设计模式大话之命令模式
2017-01-22 16:07
295 查看
春望 杜甫
国破山河在,城春草木深。感时花溅泪,恨别鸟惊心。烽火连三月,家书抵万金。白头搔更短,浑欲不胜簪。
人与人之间少不了沟通,书信是一种很重要的沟通方式,尤其是当手机,电话,还没诞生之前,战乱年代,生灵涂炭,很多人梦想穿越,真过去了估计也就只能活一集,那时候书信就是一种很主要的传递信息的方式。
今天我们来聊得是命令模式:
将来自客户端的请求封装成一个对象,我们 不需要了解这个请求会被怎么处理,以及这个请求被接收后的具体细节。实现了请求者跟实现者之间的解耦。具体做法就是在请求者和目标者之间增加一个中间人的角色,来达到解除耦合的目的。
类图:
下面就一起来看下大清邮政局的例子,没有邮局之前,古代人报信都是差人去送,口耳相传,再原始点的方式就是烽火传信,狼烟滚滚。有了邮局后,一切变得轻松了,我们不管信怎么到对方那,是走陆路还是水路,是往北还是东,只要准备好信件,到邮局去发个命令,我要送信,剩下来的事情我就不关心了。
角色:
(1)发信人
(2)邮局
(3)收信人
代码实现:
/** * @author Administrator * 信件接收者 */ public class Receiver { public void readMail(String message){ System.out.println("收件人读取信件:"+message); } } public interface IPost { public void sendMail(String message); } /** * @author Administrator * 邮局角色 */ public class Post implements IPost{ private final Receiver recevier; public Post(Receiver recevier) { this.recevier=recevier; } public void sendMail(String message) { this.recevier.readMail(message); } } /** * @author Administrator * 发信人角色,只引用了邮局对象实例,没有与收件人发生任何关联,可以说发信人和收信人之间没有任何联系,双方就是通过邮局中间人获得通信 */ public class Invoke { private IPost post; public void setPost(IPost post) { this.post=post; } public void sendMail(String message){ System.out.println("发信人投递信件给邮局"); this.post.sendMail(message); } } //客户端 public class PostOffice { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Receiver rec=new Receiver(); IPost post=new Post(rec); Invoke invoke=new Invoke(); invoke.setPost(post); invoke.sendMail("烽火连三月,家书抵万金。"); } }
结果:
结构可以看出,发信人,邮局,收信人之间可以正常运行,信件经邮局发送到收件人手中,发件人跟收件人没有关联。
相关文章推荐
- 戏说java设计模式中的命令模式
- java设计模式_命令模式
- java设计模式_命令模式 两个不同风格的实现
- java设计模式----command模式(命令模式)
- java 设计模式-行为模式之命令模式
- Java设计模式-之Command命令模式
- java 设计模式学习笔记十二 command命令设计模式
- java设计模式_命令模式 两个不同风格的实现
- Java设计模式八:命令模式(Command)
- Java设计模式八:命令模式(Command)
- Java设计模式 Design Pattern:命令模式 Command Pattern
- Java设计模式——命令模式
- java软件体系设计模式----命令
- JAVA设计模式—命令模式(Command)
- java设计模式之Command(菜单命令)
- Java设计模式 Design Pattern:命令模式 Command Pattern
- JAVA设计模式九--Command(命令模式)
- java设计模式之命令模式Command
- java设计模式之命令模式
- 设计模式(十四)----- 命令模式(Command)----(JAVA版)