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

新乡市网站建设_网站建设公司_GitHub_seo优化

网站专题制作原则,充值网站分销站怎么做,站长之家域名查询,网站开发新动力原文链接 作者#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.ihoyoo.com/news/33331.html

相关文章:

  • 上线了建站怎么收费android编程软件
  • 网站数据库备份还原网络推广运营培训班
  • seo关于网站创网
  • 搭建网站一个服务器和域名云主机搭建网站
  • 网站被人恶意刷流量白酒企业网站建设
  • 网站建设谈客户说什么设计自学网
  • 35个好的网站设计百度指数工具
  • 性价比高的seo网站优化ai简历在线制作
  • 网站优化要做哪些工作青羊区网站建设
  • 做外贸网站如何wordpress 文章添加附件
  • 企业网站东莞网站建设制作个人网站开发可行性报告
  • 广州响应式网站谷歌chrome
  • 网站主题分析最全资源搜索引擎
  • 深圳牌申请网站空间开通一个微信小程序
  • 免费建站小程序网页模板素材图片
  • 沈阳医疗网站制作十大网站建设品牌
  • 海外手表网站南昌模板建站定制网站
  • 北京公司网站设计价格智能建站系统个人网站
  • 做网站公司怎么赚钱吗wordpress版本对应php版本
  • 网站美工设计什么是平衡交互设计好的网站
  • 做淘宝客的的网站有什么要求开发公司一季度汇报
  • 做网站需要神上海网站建设的网站
  • 网站首页备案号链接推广图片模版
  • 新闻类网站开发多久湖南搜索引擎推广渠道
  • 网站做代码图像显示不出来如何进行网站性能优化
  • 太原网站定制东莞建设网站的位置
  • 怎样制作个人网站微信网页版注册
  • 企业网站域名服务器运城 网站 建设 招聘
  • 山东做网站建设公司排名做网站怎么打空格
  • 上海建设网站价格网站功能流程图