当前位置:首页 > CN2资讯 > 正文内容

我的世界java状态快捷键

4天前CN2资讯


 作者:Pankaj Kumar 

命令模式是一种行为模式,因此,它处理的是对象的行为。命令模式为系统中不同的对象提供中性化的交流媒介。根据GoF的定义,命令模式是:

通过封装一组完全不相关的对象相互之间的的交互及通讯来完成松耦合。

允许某一个对象的行为的变化是独立于其他对象的。

在企业级应用中,命令模式是非常有用的,它使得多个对象可以相互交流。如果一些对象与另一些对象直接交流,系统组件之间是紧耦合的方式。这种方式导致系统具有更高的可维护性,可扩展的灵活性变得很低。命令模式专注于提供一个调解人介于需要交流的对象之间来帮助完成对象间的松耦合。

飞机流量控制器就是使用命令模式最好的例子。空管中心就是和这个负责不同飞机之间交流的调解人。调解人犹如一个不同对象之间的路由器,它有自己逻辑来提供对象之间如何交流。

在本文的例子中,我们试着完成一个聊天程序,允许群聊。用户使用自己的名字来识别,他们可以发送接收消息。任何人发送的消息都能被群组中的其他用户接收到。

调解人接口

首先创建调解人接口,用于如何定义具体的调解人。

package .mediator; public interface ChatMediator { public void sendMessage(String msg, User user); void addUser(User user); }

组群用户接口

用户可以发送接送信息,因此应该有用户接口或者抽象类。此处创建用户抽象类如下:

package .mediator; public abstract class User { protected ChatMediator mediator; protected String name; public User(ChatMediator med, String name){ this.mediator=med; =name; } public abstract void send(String msg); public abstract void receive(String msg); }

注意用户有一个对调解人的索引,因为不同的用户需要交流。

调解人实体类

现在调解人的实体类,它包含了再组群中的一些类用户并且提供用户之间如何交流的逻辑。

package .mediator; import java.util.ArrayList; import java.util.List; public class ChatMediatorImpl implements ChatMediator { private List users; public ChatMediatorImpl(){ this.users=new ArrayList<>(); } @Override public void addUser(User user){ this.users.add(user); } @Override public void sendMessage(String msg, User user) { for(User u : this.users){ //message should not be received by the user sending it if(u != user){ u.receive(msg); } } } }

组群用户的实体类

现在创建用户的实体类用于客户端中

package .mediator; public class UserImpl extends User { public UserImpl(ChatMediator med, String name) { super(med, name); } @Override public void send(String msg){ System.out.println(+": Sending Message="+msg); mediator.sendMessage(msg, this); } @Override public void receive(String msg) { System.out.println(+": Received Message:"+msg); } }

注意,send()方法正在调解人中被用于传递信息给其他用户。但是它不知道如何被此调解人使用。

命令模式客户端

现在完成一个简单的聊天程序来完成组群聊天。

package .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 Message=Hi All Lisa: Received Message:Hi All Saurabh: Received Message:Hi All David: Received Message:Hi All

命令模式的UML图

JDK中的命令模式

java.util.Timer类中scheduleXXX()方法

java.lang.reflect.Method invoke()方法

特别注意的地方

命令模式中,当不同的对象的通讯逻辑很复杂是,我们可以使用中心化的交流方式来处理此通讯逻辑。

Java Message Service(JMS)消息服务与观察者模式一起来完成消息在不同程序间的订阅与发布。

命令模式仅仅是为了松耦合。如果调解人的数量变大,此时易维护性就变差了。

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/22225.html

    分享给朋友:

    “我的世界java状态快捷键” 的相关文章

    回国节点使用指南:轻松访问国内网站,畅享便捷网络体验

    回国节点的定义与作用 回国节点是一种特殊的网络技术,它允许用户通过位于中国境外的服务器访问国内被限制的网站或服务。这种技术对于那些在国外生活或旅行,但仍需要访问中国大陆网站的人来说非常有用。回国节点的主要作用是绕过地理限制,让用户能够像在国内一样自由地浏览和使用各种在线资源。 使用回国节点,用户不仅...

    全球主机交流:共享经验与技术的最佳平台

    全球主机交流是一个汇聚了各种关于虚拟主机、VPS、服务器和域名等话题的社区。在这样的环境中,全球各地的主机爱好者可以自由地交流经验、分享知识,讨论技术问题。而这样的交流不仅限于技术和使用问题,更多的是对一个不断发展的技术领域的探索。用户在这里可以找到适合自己的主机服务,同时也能够和其他人分享使用心得...

    CN2 GIA VPS推荐:最佳虚拟专用服务器选择

    CN2 GIA VPS概述 在当今数字时代,寻找一个稳定且高效的虚拟专用服务器(VPS)成为很多企业和个人用户的需求。而CN2 GIA VPS凭借其卓越的性能和稳定的连接,受到了越来越多的关注。简单来说,CN2 GIA是一种中国电信提供的高质量网络传输线路,可以确保数据的快速和安全传输。 我曾尝试过...

    如何解决甲骨文IP被墙的问题及有效方法

    谈到甲骨文,大家可能会联想到古老的文字和悠久的历史,然而随着信息技术的飞速发展,甲骨文的应用已经不仅仅局限于文化研究。在数据存储、信息管理等领域,甲骨文的IP(互联网协议)在全球范围内发挥着重要的作用。不幸的是,现如今许多用户却发现自己无法正常访问这些IP。这就是我们所说的“甲骨文IP被墙”的现象。...

    机房迁移全攻略:确保系统安全与顺利过渡的最佳实践

    机房迁移是一个涉及将数据中心内各种设备从一个地点转移到另一个地点的复杂过程。具体包括服务器、存储设备以及网络设备等。这样的迁移通常不仅仅是物理搬运,还涉及到设备的断电、拆卸、运输、重新安装与最后的测试,确保系统在新环境中能够正常运行。对于企业而言,这一过程对运营的影响极小,数据的安全性必须得到保障,...

    Putty教程:从安装到高级功能的全面指南

    什么是Putty? Putty是一款广泛使用的终端仿真器,它主要用于与远程设备进行连接。通过Putty,用户能够在本地计算机上访问多种类型的网络设备和服务器。它的界面简单明了,尤其适合新手使用,后期又具备足够的扩展功能来满足高级用户的需求。每当我需要管理远程服务器时,Putty总是我首选的工具。 我...