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

网站外链建设工作计划/seo长尾快速排名

网站外链建设工作计划,seo长尾快速排名,想做一个驾校的招生网站应该怎么做,怎么做关不掉的网站原文链接 作者&#xff1a;Pankaj Kumar 译者&#xff1a;f0tlo <1357654289qq.com>命令模式是一种行为模式&#xff0c;因此&#xff0c;它处理的是对象的行为。命令模式为系统中不同的对象提供中性化的交流媒介。根据GoF的定义&#xff0c;命令模式是&#xff1a;通过…

原文链接  作者:Pankaj Kumar 译者:f0tlo <1357654289@qq.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.mediator=med;

this.name=name;

}

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 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 com.journaldev.design.mediator;

public class UserImpl extends User {

public UserImpl(ChatMediator med, String name) {

super(med, name);

}

@Override

public void send(String msg){

System.out.println(this.name+": Sending Message="+msg);

mediator.sendMessage(msg, this);

}

@Override

public 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 Message=Hi All

Lisa: Received Message:Hi All

Saurabh: Received Message:Hi All

David: Received Message:Hi All

命令模式的UML图

17ae7bb89e107684bccc7d69e94caa2c.png

JDK中的命令模式

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

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

特别注意的地方

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

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

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

d0c1501a6d8bb921cf36400dc89de69f.png

http://www.lbrq.cn/news/1105057.html

相关文章:

  • 南阳做做网站/百度网站官网网址
  • 百度糯米网站怎么做/关键词优化包年推广
  • 南昌网站建设q479185700惠/sem代运营费用
  • 设计师助理一般都干嘛/seo营销工具
  • 建一个网站需要什么资料/新的网络推广方式
  • 有没有一起做网站的/一键优化清理加速
  • 网站改版方案ppt/国外搜索引擎网站
  • 网站续费自己做/中国seo关键词优化工具
  • 霞山网站建设公司/好的竞价账户托管外包
  • wordpress分享文章插件/东莞网络优化哪家公司好
  • 做网站排名的公司有哪些/关键词推广方式
  • 什么网站可以自己做字/百度一下你就知道了 官网
  • 用java做直播网站/腾讯企点官网
  • 做脚本从网站引流/如何推广一个平台
  • 虚拟主机网站后台/深圳市龙华区
  • 福州网站建设教程视频/网络广告营销的案例
  • 华为公司网站建设相关内容/全球访问量top100网站
  • 旅游手机网站模板/哪些网站可以发广告
  • 做网站用什么软件知乎/班级优化大师的功能有哪些
  • 建站网址不安全/seo关键词教程
  • dw做网站/广州知名网络推广公司
  • 高端的环保行业网站开发/seo站点
  • 制作重庆城市的网页/seo基本步骤
  • 做本地网站能赚钱么/沪深300指数
  • 养猪网站建设规划书/软件推广平台
  • 玉环 企业网站建设/企业网络营销
  • 基础展示营销型型网站/网站分享
  • 网站制作素材/长春seo公司哪家好
  • 淄博专业网站建设哪家专业/重庆做优化的网络公司
  • 百度.com的网站制作/北京今日重大新闻
  • 【Lua】大G表
  • Go语言--语法基础6--基本数据类型--map类型
  • Chris Fraser | 中国早期思想中墨家与荀子的知识论
  • XSS的反射型、DOM型、存储型漏洞
  • OpenCV特征点提取算法orb、surf、sift对比
  • 1.初始化