`
cakin24
  • 浏览: 1388983 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

命令模式——邮局发信

阅读更多

一模式定义

命令模式,将来自客户端的请求封建为一个对象,无须了解这个请求激活的动作或有关接受这个请求的处理细节。命令模式的根本目的在于将"请求者"与"实现者"之间解耦。

 

二模式举例

1模式分析

我们借用邮局发信来说明这一模式。


 

2命令模式静态类图


 

3代码示例

3.1信件接收者接口一IReceiver

 

package com.demo.receiver;

/**
 * 信件接收者接口
 * 
 * @author
 * 
 */
public interface IReceiver {
	/**
	 * 收件人收到信件读取
	 * 
	 * @param message
	 */
	public void readMail(String message);
}

3.2信件接收者一Receiver

package com.demo.receiver;

/**
 * 信件接收者
 * 
 * @author
 * 
 */
public class Receiver implements IReceiver {
	/**
	 * 收件人收到信件读取
	 * 
	 * @param message
	 */
	public void readMail(String message) {
		System.out.println("收件人读取信件:" + message);
	}
}

3.3邮局接口一IPost

package com.demo.command;

/**
 * 邮局接口
 * 
 * @author
 * 
 */
public interface IPost {
	/**
	 * 邮局发送信件
	 * 
	 * @param message
	 */
	public void sendMail(String message);

}

3.4邮局实现一Post

package com.demo.command;

import com.demo.receiver.IReceiver;

/**
 * 邮局实现类
 * 
 * @author
 * 
 */
public class Post implements IPost {
	// 收信人对象实例
	private final IReceiver receiver;

	/**
	 * 构造方法传入收信人对象实例
	 * 
	 * @param receiver
	 */
	public Post(IReceiver receiver) {
		this.receiver = receiver;
	}

	/**
	 * 邮局发送信件
	 * 
	 * @param message
	 */
	@Override
	public void sendMail(String message) {
		System.out.println("邮局将信件发给收信人...");
		// 邮局发送信件给收信人
		this.receiver.readMail(message);
	}

}

3.5消息发送者一Invoker

package com.demo.invoker;

import com.demo.command.IPost;

/**
 * 发信人
 * 
 * @author
 * 
 */
public class Invoker {
	// 邮局私有属性
	private IPost post;

	/**
	 * 设置邮局对象实例
	 * 
	 * @param post
	 */
	public void setPost(IPost post) {
		this.post = post;
	}

	/**
	 * 发信人发送信件
	 * 
	 * @param message
	 */
	public void postMail(String message) {
		System.out.println("发信人投递信件给邮局...");
		this.post.sendMail(message);
	}
}

3.6让邮局开始工作一Client

package com.demo;

import com.demo.command.IPost;
import com.demo.command.Post;
import com.demo.invoker.Invoker;
import com.demo.receiver.Receiver;

/**
 * 客户端应用程序
 * 
 * @author
 * 
 */
public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 创建一个收信人对象实例
		Receiver receiver = new Receiver();
		// 创建一个邮局对象实例 传入收信人对象实例
		IPost post = new Post(receiver);
		// 创建一个发信人对象实例 传入邮局对象实例
		Invoker invoker = new Invoker();
		// 设置邮局
		invoker.setPost(post);
		// 发信人开始发送信息!!!
		invoker.postMail("你好!好久不见,最近工作忙吗?");

	}
}

 

4运行结果

发信人投递信件给邮局...

邮局将信件发给收信人...

收件人读取信件:你好!好久不见,最近工作忙吗?

 

三该模式设计原则

1"开-闭"原则

2最少知识原则

 

四命令模式静态类图


 

  • 大小: 101.3 KB
  • 大小: 78.6 KB
  • 大小: 64.4 KB
1
1
分享到:
评论

相关推荐

    Java基于命令模式实现邮局发信功能详解

    Java基于命令模式实现邮局发信功能详解 命令模式是 Java 中的一种设计模式,它将来自客户端的请求封装成一个对象,无须了解这个请求激活的动作或有关接受这个请求的处理细节。命令模式的根本目的在于将"请求者"与...

    jmail发信的软件源码

    JMail是一款在VB环境中广泛使用的邮件发送组件,它允许开发者通过编程的方式发送电子邮件,包括SMTP(简单邮件传输协议)和POP3(邮局协议)等服务。 【描述】"jmail发信VB很实用的源码,精心挑选的精品源码"暗示了...

    计算机基础——柳秀梅.pdf

    16. 局域网工作模式:局域网有两种常见工作模式,对等模式(P2P)和客户服务器模式。 17. 电子邮件发送:Outlook Express使用SMTP协议将邮件发送到邮局服务器。 18. IP地址:合法的IP地址由四个0-255的数字组成,...

    网络原理PPT——关于应用层的

    它分为两种模式:主动模式和被动模式。FTP服务器提供文件,而FTP客户端请求并接收文件。FTP协议包括控制连接和数据连接,控制连接用于发送命令和响应,数据连接则用于实际的文件传输。 3. **远程登录(Telnet)**:...

    材料一:昆明市邮政局营销模式转变及营销体系建设的进一步完善和提升.doc

    材料一:昆明市邮政局营销模式转变及营销体系建设的进一步完善和提升.doc

    内蒙古自治区邮政局投递员工满意度调查研究

    内蒙古自治区邮政局投递员工满意度调查研究,李浩,武晓岛,目的 分析内蒙古邮政局投递员工满意度现状,可以为内蒙古自治区乃我国邮政的发展提供一些有益的帮助。方法 采用多阶段分层整群抽�

    springboot+RabbitMQ三种模式demo

    Direct模式是最简单的模式,类似于邮局的信件分发。消息发送者(Producer)定义一个路由键(Routing Key),接收者(Consumer)定义一组绑定键(Binding Key)。当路由键与绑定键完全匹配时,消息会被传递到相应的...

    exchange 2007 设置邮局主管地址

    设置完成后,需要再次运行`Get-TransportServer`命令来确认新的邮局主管地址已经被成功设置。 **步骤操作:** 1. **打开Exchange命令行管理程序:** - 同上。 2. **运行命令验证设置:** - 输入以下命令: ``` ...

    案例——电子商务物流配送.pptx

    这种模式虽然灵活,但可能带来库存管理的挑战,如空间限制、商品安全和发货效率等问题。 在物流选择上,有四种主要方式:邮局发货、快递发货、货运发货和综合考虑各种因素后的最优决策。邮局发货因其网点遍布全国,...

    网络编程:pop3邮局协议

    网络编程是IT领域中的一个重要部分,它涉及到计算机之间的通信,其中POP3(Post Office Protocol version 3)邮局协议是电子邮件系统中用于接收邮件的标准协议。本文将深入探讨POP3协议,以及如何使用C++和Winsocks...

    C++设计模式之观察者模式(Observer)

    观察者模式通常的叫法叫做订阅-发布模式,类似于报刊杂志的订阅,观察者和被观察者就是读者和邮局的关系,读者先要在邮局订阅想要的报刊,当报刊发行时,邮局会将报刊邮寄到读者家里。观察者(Observer)和被观察者...

    《中国医疗管理科学》杂志经邮局发行启事 (1).pdf

    研究采用了创新的教学模式——结合情景模拟和改良版Mini-CEX量表,以提升新入职护士的理论知识和实践能力。Mini-CEX量表原本用于评估临床医生的技能,经过改良后在护士护理技能评价中展现出更高的全面性和客观性。 ...

    地级市-1984年邮局数和固定电话数已整理好,可用做工具变量

    地级市-1984年邮局数和固定电话数已整理好,可用做工具变量 地级市-1984年 邮局数和固定电话数已整理好,可用做工具变量 地级市-1984年邮局数和固定电话数 已整理好,可用做工具变量 地级市-1984年邮局数和固定电话...

    公司管理全套制度——报刊邮发管理规定.doc

    《公司管理全套制度——报刊邮发管理规定》是企业内部管理的重要组成部分,旨在规范公司对报刊的订阅、分发及邮发工作的操作流程,确保信息流通的高效与规范。以下是对该规定的主要内容的详细解释: 1. **第一条**...

    众包模式下网站开发的简单规划.pdf

    在互联网经济下,众包已经被运用于各行各业中,法國邮局的运营改革,IBM的内部管理改革,印度农产品市场的新模式,美国Snapt ee的T恤众包设计,美国赛利诺斯葡萄酒庄园的用户自定酿制过程,国内的乌云众测平台,赚...

    新编计算机网络教程——第3章.ppt

    例如,邮政通信系统可以作为一个类比,邮局作为实体,通过信封(接口)传递信息,而收件人不需要知道信是如何从发件人那里传递过来的。 网络通常采用分层设计,如图3-1所示,展示了具有五层协议的网络体系结构。...

    ASP.NET源码——电子邮件模块发送接收源码.zip

    本压缩包"ASP.NET源码——电子邮件模块发送接收源码.zip"包含了电子邮件模块的源代码,这对于学习和理解如何在ASP.NET环境中实现邮件的发送和接收至关重要。 在ASP.NET中,发送电子邮件通常涉及到System.Net.Mail...

    浪潮SMTP发信系统

    特色预览支持发送的邮局有(163,qq,gmail,yahoo,aol,pchome和自定义企业邮局等 (说明:网易163,yahoo的邮箱要开通smtp后才能发送支持批量发送,自动换IP(ADSL或路由器)功能 支持本地图片的发送模式(jpg,gin,bmp格式 ...

    计算机网络课程设计——邮箱系统.zip

    在这个课程设计中,学生通常会学习如何构建一个基本的电子邮件服务,从而理解网络协议如SMTP(简单邮件传输协议)、POP3(邮局协议)或IMAP(因特网消息访问协议)的工作原理。 首先,SMTP是用于发送邮件的主要协议...

Global site tag (gtag.js) - Google Analytics