重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
我们继续学习设计模式系列文章。
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、成都网站设计、井陉矿网络推广、成都小程序开发、井陉矿网络营销、井陉矿企业策划、井陉矿品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联公司为所有大学生创业者提供井陉矿建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com本篇要讲的是命令模式,其实命令模式也比较好理解,没有用到多高深的技术,也不需要多复杂的抽象。只需要我们脑海里能有一个大概的原型,等我们遇见类似问题的时候我们能通过巧妙的方式来解决。我们做应用层开发的大部分接触的都是一些模式、框架、思想等等,不像搞低层开发的,他们研究的可能多数是一些技术实现的问题,而我们是学习实现的方法论。应用层开发在技术的复杂程度上是有限的,在组合技术的实现上是复杂的。所以有一些.NET架构师确实比较厉害,他们能很早的就料到会出现什么问题,他们有很强的架构思想,对设计模式的掌握、对架构设计思想、对敏捷、极限等等都有了解,将它们化为一体,才能设计出非常漂亮的开发架构。[王清培版权所有,转载请给出署名]
[NET架构师也是我们每一个NET程序员梦寐以求的归属,我们向着这个目标努力吧。加油!]
命令模式:将调用封装成命令对象,通过命令对象进行调用,很好的消除调用者与被调用者之间的耦合。
这是我对命令模式的理解,定义有很多种,侧重点不同,理解就行了。我们引入问题,带着问题来学习模式能很好的“消化吸收”。
现在移动终端越来越流行,IPAD、IPHONE、家用设备等等,这是计算机发展的一种趋势,更是人类生活质量的重大提升,有了计算机所有的东西都是信息化、数字化、科技化,不用出门都能买东西,不用到家都能自动打开热水器烧水,不用动手都能吃到饭。看来我们选择软件开发是没错的,至少我们能改善自己的生活环境。
我们来改善一下我们自己的家庭环境,使用全数字化,用一个移动终端来控制家里的所有的电子设备,比如微波炉、热水器、电视机、冰箱等等。只要是智能设备我们都能控制。
[软件是对硬件编程,使用软件来编写硬件处理逻辑]
我们假设这个终端设备叫做家庭设备控制中心,我们要开发一个这样的设备来对所有的这些家用电器进行控制,但是这些家用电子各种各样,不管是从造型上还是内部实现上都有千差万别,想要用这个终端进行统一的控制似乎不太容易。这个终端不是死的,家用电子可能会随着时间的长久而损坏,当我们更换新的家用电器时,我们的终端要能一样工作,只需要简单的配置一下就能控制新的电器。[王清培版权所有,转载请给出署名]
所以这里引入了两个问题,第一个是控制终端不能随着家用电器的变化而改动,第二个是不可能每个家用电器都按照终端的规定进行制造。我们需要有一种办法来解决这矛盾的局面。救命稻草来了,我们可以运用“命令模式”的思想来解决这种矛盾的局面。
我们先来看一个命令模式的大概流程图。
1:
在这种情况下,调用者与被调用者都不需要改动,只需要在这两者之间加上命令对象来传达这种调用者吩咐的命令就行了。
家用终端可能有多个按钮,每个按钮控制不同的电器,我们只需要将上图的原理带入到终端中就行了。
2:
这样就可以用一个遥控器来控制任意的电器设备了。我们来看看代码是怎么实现的,当然实现的方式有很多种,每种各有优缺点,本篇文章以入门为主。
电视机代码:
- using
- using
- using
- namespace
- ///
- /// 电视机
- ///
- publicclass
- ///
- /// 模式是关闭的
- ///
- boolfalse
- ///
- /// 切换关闭、打开
- ///
- publicstring
- if
- false
- return"关闭电视机"
- else
- true
- return"打开电视机"
电视机命令对象代码:
- using
- using
- using
- namespace
- ///
- /// 电视机命令对象
- ///
- publicclass
- ///
- /// 电视机对象
- ///
- privatenew
- #region CommandInterface 成员
- ///
- /// 执行命令
- ///
- publicstring
- return
- #endregion
命令接口代码:
- using
- using
- using
- namespace
- ///
- /// 命令接口
- ///
- publicinterface
- ///
- /// 执行命令
- ///
- string
控制中心代码:
- using
- using
- using
- namespace
- ///
- /// 控制中心
- ///
- publicstaticclass
- privatestatic
- publicstaticvoid
- publicstaticstring
- return
模拟代码:
- using
- using
- using
- namespace
- class
- staticvoidstring
- new
总结:命令模式就讲完了,大概的理论就是在中间架设一个命令对象将调用者与被调用者分离开来,解决两者之间的耦合。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。