当前位置: 首页 > news >正文

公司网站公司专业的网站建设官网

公司网站公司,专业的网站建设官网,全国旅游景点视频大全,网站做推广百度好还是360好原文链接 作者#xff1a;Pankaj Kumar 译者#xff1a;f0tlo 1357654289qq.com 命令模式是一种行为模式#xff0c;因此#xff0c;它处理的是对象的行为。命令模式为系统中不同的对象提供中性化的交流媒介。根据GoF的定义#xff0c;命令模式是#xff1a; 通… 原文链接  作者Pankaj Kumar 译者f0tlo 1357654289qq.com 命令模式是一种行为模式因此它处理的是对象的行为。命令模式为系统中不同的对象提供中性化的交流媒介。根据GoF的定义命令模式是 通过封装一组完全不相关的对象相互之间的的交互及通讯来完成松耦合。 允许某一个对象的行为的变化是独立于其他对象的。 在企业级应用中命令模式是非常有用的它使得多个对象可以相互交流。如果一些对象与另一些对象直接交流系统组件之间是紧耦合的方式。这种方式导致系统具有更高的可维护性可扩展的灵活性变得很低。命令模式专注于提供一个调解人介于需要交流的对象之间来帮助完成对象间的松耦合。 飞机流量控制器就是使用命令模式最好的例子。空管中心就是和这个负责不同飞机之间交流的调解人。调解人犹如一个不同对象之间的路由器它有自己逻辑来提供对象之间如何交流。 在本文的例子中我们试着完成一个聊天程序允许群聊。用户使用自己的名字来识别他们可以发送接收消息。任何人发送的消息都能被群组中的其他用户接收到。 调解人接口 首先创建调解人接口用于如何定义具体的调解人。 package com.journaldev.design.mediator;public interface ChatMediator {public void sendMessage(String msg, User user);void addUser(User user); }   组群用户接口 用户可以发送接送信息因此应该有用户接口或者抽象类。此处创建用户抽象类如下 package com.journaldev.design.mediator;public abstract class User {protected ChatMediator mediator;protected String name;public User(ChatMediator med, String name){this.mediatormed;this.namename;}public abstract void send(String msg);public abstract void receive(String msg); } 注意用户有一个对调解人的索引因为不同的用户需要交流。 调解人实体类 现在调解人的实体类它包含了再组群中的一些类用户并且提供用户之间如何交流的逻辑。 package com.journaldev.design.mediator;import java.util.ArrayList; import java.util.List;public class ChatMediatorImpl implements ChatMediator {private ListUser users;public ChatMediatorImpl(){this.usersnew ArrayList();}Overridepublic void addUser(User user){this.users.add(user);}Overridepublic void sendMessage(String msg, User user) {for(User u : this.users){//message should not be received by the user sending itif(u ! user){u.receive(msg);}}}}组群用户的实体类 现在创建用户的实体类用于客户端中 package com.journaldev.design.mediator;public class UserImpl extends User {public UserImpl(ChatMediator med, String name) {super(med, name);}Overridepublic void send(String msg){System.out.println(this.name: Sending Messagemsg);mediator.sendMessage(msg, this);}Overridepublic void receive(String msg) {System.out.println(this.name: Received Message:msg);}} 注意send()方法正在调解人中被用于传递信息给其他用户。但是它不知道如何被此调解人使用。 命令模式客户端 现在完成一个简单的聊天程序来完成组群聊天。 package com.journaldev.design.mediator;public class ChatClient {public static void main(String[] args) {ChatMediator mediator new ChatMediatorImpl();User user1 new UserImpl(mediator, Pankaj);User user2 new UserImpl(mediator, Lisa);User user3 new UserImpl(mediator, Saurabh);User user4 new UserImpl(mediator, David);mediator.addUser(user1);mediator.addUser(user2);mediator.addUser(user3);mediator.addUser(user4);user1.send(Hi All);}} 注意此客户端程序非常简单完全没有给出细节描述信息是如何被处理以及调解人是否将会使用用户对象。 上述程序的输出如下 Pankaj: Sending MessageHi All Lisa: Received Message:Hi All Saurabh: Received Message:Hi All David: Received Message:Hi All 命令模式的UML图 JDK中的命令模式 java.util.Timer类中scheduleXXX()方法 java Concurrency Executor execute() 方法java.lang.reflect.Method invoke()方法 特别注意的地方 命令模式中当不同的对象的通讯逻辑很复杂是我们可以使用中心化的交流方式来处理此通讯逻辑。 Java Message Service(JMS)消息服务与观察者模式一起来完成消息在不同程序间的订阅与发布。命令模式仅仅是为了松耦合。如果调解人的数量变大此时易维护性就变差了。
http://www.zqtcl.cn/news/842464/

相关文章:

  • 专业建设网站技术wordpress 虚拟资源
  • 广告网站设计哪家快网站建设外包包含内容
  • 网页游戏网站模板张家口住房和城乡建设部网站
  • 冀州建设局网站公司制作网站多少钱
  • 建设个招聘网站黄页88和58那个推广好
  • 如何设计一个漂亮的网站电商设计素材
  • 沈阳建设银行网站首页果冻影视传媒有限公司
  • 建设部网站有建筑施工分包网站规划设计方案
  • 网站wap怎么做郑州做网站华久科技
  • 哪里网站开发好姜堰网站定制
  • 广东网站开发需要多少钱百度问答官网
  • 建设电影网站的关键wordpress简码怎么用
  • 做网站的linux程序代码北京公司减资流程
  • 四川省住房建设厅网站进不去wordpress 无限下拉菜单
  • 培训网站图片网络编程基础知识
  • 外销网站怎么做的上海住房与城乡建设部网站
  • 平台网站建设教程网站建设谈业务要知道什么
  • php网站开发试题济南网站排名公司
  • 没有官方网站怎么做seo优化营销推广平台都干什么的
  • 网盘搜索网站怎么做中国建设银行网站股份结构变化
  • 有ip怎么用自己的主机做网站惠州网站制作维护
  • 优质的网站制作在线编辑器
  • 盘锦做网站电话网络营销做私活网站
  • 有关网站建设的毕业设计外卖网站的建设与推广
  • cms 做网站用模板网站做h5宣传页多少钱
  • 坪山网站建设行业现状官方建网站有哪些步骤
  • 软件下载网站模版单页网站开发实例下载
  • 张家口网站建设vewanseo实战技术培训
  • 机加工网站室内设计联盟论坛
  • 汕头装修接单网站wordpress php加密