java设计模式大话之命令模式
来源:互联网 发布:yum repolist卡死 编辑:程序博客网 时间:2024/06/06 01:34
春望 杜甫
国破山河在,城春草木深。感时花溅泪,恨别鸟惊心。
烽火连三月,家书抵万金。白头搔更短,浑欲不胜簪。
人与人之间少不了沟通,书信是一种很重要的沟通方式,尤其是当手机,电话,还没诞生之前,战乱年代,生灵涂炭,很多人梦想穿越,真过去了估计也就只能活一集,那时候书信就是一种很主要的传递信息的方式。
今天我们来聊得是命令模式:
将来自客户端的请求封装成一个对象,我们 不需要了解这个请求会被怎么处理,以及这个请求被接收后的具体细节。实现了请求者跟实现者之间的解耦。具体做法就是在请求者和目标者之间增加一个中间人的角色,来达到解除耦合的目的。
类图:
下面就一起来看下大清邮政局的例子,没有邮局之前,古代人报信都是差人去送,口耳相传,再原始点的方式就是烽火传信,狼烟滚滚。有了邮局后,一切变得轻松了,我们不管信怎么到对方那,是走陆路还是水路,是往北还是东,只要准备好信件,到邮局去发个命令,我要送信,剩下来的事情我就不关心了。
角色:
(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("烽火连三月,家书抵万金。");}}
结果:
结构可以看出,发信人,邮局,收信人之间可以正常运行,信件经邮局发送到收件人手中,发件人跟收件人没有关联。
0 0
- java设计模式大话之命令模式
- 《大话设计模式》java实现之命令模式
- 大话设计模式之命令模式
- 大话设计模式之命令模式
- 大话设计模式之命令模式
- 大话设计模式读书笔记之命令模式
- 大话设计模式java版:命令模式
- java设计模式大话之适配器模式
- java设计模式大话之原型模式
- java设计模式大话之代理模式
- java设计模式大话之模板模式
- 大话设计-命令模式
- 大话设计模式-命令模式
- 大话设计模式 命令模式
- 大话设计模式-命令模式
- 大话设计模式-----命令模式
- 《大话设计模式》读书笔记之C++实现--chapter23命令模式
- 《大话设计模式》读书笔记之C++实现--chapter24命令模式
- 【JAVA秒会技术之异常解决】Dmaven.multiModuleProjectDirectory system propery is not set
- 扫描二维码简单实现Zxing
- Linux内存管理机制控制--mallopt,避免大量小内存不回收问题
- 1 div+css布局初体验
- Android Fragment之间的通信
- java设计模式大话之命令模式
- jquery.datatables添加跳转到指定页
- Merkle tree在区块链中的应用
- 微信与朋友圈后台架构
- java socket远程控制主机,执行命令
- android中读取properties文件
- jquery1.9 动态修改select的值
- Java基础之抽象类与接口
- 卡夫卡