﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-byf891012</title><link>http://www.blogjava.net/byf891012/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 01:59:38 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 01:59:38 GMT</pubDate><ttl>60</ttl><item><title>23种之命令模式</title><link>http://www.blogjava.net/byf891012/archive/2011/06/09/351972.html</link><dc:creator>贝贝</dc:creator><author>贝贝</author><pubDate>Thu, 09 Jun 2011 05:16:00 GMT</pubDate><guid>http://www.blogjava.net/byf891012/archive/2011/06/09/351972.html</guid><wfw:comment>http://www.blogjava.net/byf891012/comments/351972.html</wfw:comment><comments>http://www.blogjava.net/byf891012/archive/2011/06/09/351972.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/byf891012/comments/commentRss/351972.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/byf891012/services/trackbacks/351972.html</trackback:ping><description><![CDATA[<p align="center"><strong><span style="color: red; font-size: 36pt"><br />文章属于转载</span><br /></strong><br />命令模式也是开发中常见的一个模式,也不是太难,比较简单,下面来详细的写一下命令模式。<br /></p>
<h1 style="text-align: center">命令模式(Command)</h1>
<h2 style="text-align: center">1&nbsp; 场景问题</h2>
<h3>&nbsp;1.1&nbsp; 如何开机</h3>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 估计有些朋友看到这个标题会非常奇怪，电脑装配好了，如何开机？不就是按下启动按钮就可以了吗？难道还有什么玄机不成。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于使用电脑的客户&#8212;&#8212;就是我们来说，开机确实很简单，按下启动按钮，然后耐心等待就可以了。但是当我们按下启动按钮过后呢？谁来处理？如何处理？都经历了怎样的过程，才让电脑真正的启动起来，供我们使用。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 先一起来简单的认识一下电脑的启动过程，了解一下即可。</p>
<ul><li>当我们按下启动按钮，电源开始向主板和其它设备供电</li><li>主板的系统BIOS（基本输入输出系统）开始加电后自检</li><li>主板的BIOS会依次去寻找显卡等其它设备的BIOS，并让它们自检或者初始化</li><li>开始检测CPU、内存、硬盘、光驱、串口、并口、软驱、即插即用设备等等</li><li>BIOS更新ESCD（扩展系统配置数据），ESCD是BIOS和操作系统交换硬件配置数据的一种手段</li><li>等前面的事情都完成后，BIOS才按照用户的配置进行系统引导，进入操作系统里面，等到操作系统装载并初始化完毕，就出现我们熟悉的系统登录界面了。&nbsp; </li></ul>
<h3><br />1.2&nbsp; 与我何干</h3>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;讲了一通电脑启动的过程，有些朋友会想，这与我何干呢？<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 没错，看起来这些硬件知识跟你没有什么大的关系，但是，如果现在提出一个要求：请你用软件把上面的过程表现出来，你该如何实现？<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先把上面的过程总结一下，主要就这么几个步骤：首先加载电源，然后是设备检查，再然后是装载系统，最后电脑就正常启动了。可是谁来完成这些过程？如何完成？<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不能让使用电脑的客户&#8212;&#8212;就是我们来做这些工作吧，真正完成这些工作的是主板，那么客户和主板如何发生联系呢？现实中，是用连接线把按钮连接到主板上的，这样当客户按下按钮的时候，就相当于发命令给主板，让主板去完成后续的工作。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另外，从客户的角度来看，开机就是按下按钮，不管什么样的主板都是一样的，也就是说，客户只管发出命令，谁接收命令，谁实现命令，如何实现，客户是不关心的。</p>
<h3><br />1.3&nbsp; 有何问题</h3>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把上面的问题抽象描述一下：客户端只是想要发出命令或者请求，不关心请求的真正接收者是谁，也不关心具体如何实现，而且同一个请求的动作可以有不同的请求内容，当然具体的处理功能也不一样，请问该怎么实现？</p>
<h2 style="text-align: center">2&nbsp; 解决方案</h2>
<h3>2.1&nbsp; 命令模式来解决</h3>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用来解决上述问题的一个合理的解决方案就是命令模式。那么什么是命令模式呢？<br /><strong>（1）命令模式定义<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将一个请求封装为一个对象，从而使你可用不同的请求对客户进行参数化；对请求排队或记录请求日志，以及支持可撤销的操作。</p>
<p><strong>（2）应用命令模式来解决的思路</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先来看看实际电脑的解决方案<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 先画个图来描述一下，看看实际的电脑是如何处理上面描述的这个问题的，如图1所示：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://pic002.cnblogs.com/img/sjms2010/201007/2010070907235393.gif"  alt="" /><br /><br /></p>
<p align="center"></p><img src ="http://www.blogjava.net/byf891012/aggbug/351972.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/byf891012/" target="_blank">贝贝</a> 2011-06-09 13:16 <a href="http://www.blogjava.net/byf891012/archive/2011/06/09/351972.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>