面向接口编程详解(三)——模式研究

面向接口编程详解(三)——模式研究

ID:42771308

大小:125.14 KB

页数:5页

时间:2019-09-22

面向接口编程详解(三)——模式研究_第1页
面向接口编程详解(三)——模式研究_第2页
面向接口编程详解(三)——模式研究_第3页
面向接口编程详解(三)——模式研究_第4页
面向接口编程详解(三)——模式研究_第5页
资源描述:

《面向接口编程详解(三)——模式研究》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、面向接口编程详解(三)——模式研究2008-04-1411:15byEricZhang(T2噬菌体),8491visits,网摘,收藏,编辑通过前面两篇,我想各位朋友对“面向接口编程”的思想有了一定认识,并通过第二篇的例子,获得了一定的直观印象。但是,第二篇中的例子旨在展示面向接口编程的实现方法,比较简单,不能体现出面向接口编程的优势和这种思想的内涵。那么,这一篇作为本系列的终结篇,将通过分析几个比较有深度的模式或架构,解析隐藏其背后的面向接口思想。这篇我将要分析的分别是MVC模式和.NET平台的分层架构。这篇的内容可能会比较抽象,望谅解。1.从MV

2、C开始MVC简介:本文不打算详细解释MVC架构,而是把重点放在其中的面向接口思想上。所以在这里,只对MVC做一个简略的介绍。MVC是一种用于表示层设计的复合设计模式。M、V、C分别表示模型(Model)、View(视图)、Controller(控制器)。它们的职责如下:模型:用于存储应用中的数据及运行逻辑,是应用的实体。视图:负责可视部分,用于与用户交互及呈现数据。视图只负责显示,不负责将用户的操作行为解释给模型。控制器:负责将用户的行为解释给模型。根据指定的策略和用户的操作,调用模型的逻辑。关于三者的关系,我画了一张图,大家请看:图3.1MVC模式

3、示意它们之间的交互有以下几种:1.当用户在视图上做任何需要调用模型的操作时,它的请求将被控制器截获。2.控制器按照自身指定的策略,将用户行为翻译成模型操作,调用模型相应逻辑实现。3.控制器可能会在接到视图操作时,指定视图做某些改变。4.当模型的状态发生改变时,将通过某种方式通知视图。5.视图可以从模型获取状态,从而改变自己的显示。 MVC介绍完了,那么可能会有人问,我们的主题呢?面向接口思想呢?其实,MVC中处处都存在面向接口的影子。下面,我对其中几个侧面进行解释。1.首先我们可以看到,视图和模型是有直接交互的,也就是上面的4、5两点。但是有一点可能

4、会让你吃惊:它们两个谁也不“认识”谁,即它们相互并不知道对方是做什么的、有什么属性、有什么方法,但是它们能交互。这是怎么做到的呢?因为它们个各知道对方实现了某一个接口。此乃面向接口思想一大作用:使相互不认识的类进行交互。这样做是很有好处的,首先它们之间的耦合度大大降低,其次双方都可以进行替换,只要实现了相同的接口,就没有问题。打个不太恰当的比喻。我们都知道120这个电话号码,是急救电话。其实120就是个接口,因为当你拨打这个电话时,你不知道那边是哪所医院,甚至不知道那边是不是医院,你只知道电话那头的地方可以救人,也可以说实现了IHelp接口。这样,你

5、通过一个号码可以说同全部的救人机构联系起来了,当有紧急事件,接线控制那边会将你的请求接到最近可用的机构,你就可以最快的得到帮助。现在我们假设没有使用面向接口思想,来看看会发生什么恐怖的事情:首先,我家的120号码是绑定在本市第一人民医院的,即当我拨打120时,只能拨通第一人民医院。如果有一天我食物中毒了,急忙拨通了120,但是电话那边告诉我他们医院的救护车都派出去了,我问那怎么接通别家医院的电话,那边的MM很温柔的告诉我,让我打电话给网通公司,然后重新为我布线。于是我吐血而亡……言归正传。这里,我要引入一个设计模式,叫观察着(Observer)模式。

6、这个模式大约是这样的:整个模式中有两种实体:观察者和被观察者,它们分别实现一个接口,这里我们姑且叫做IObserver与IObserverSubject。IObserver只有一个方法,例如叫Update,当被观察者状态改变时,调用这个方法,用来通知观察者。IObserverSubject接口有两个方法,都是供观察者调用。一个用来将观察者注册为此被观察者的观察对象,另一个用于将观察者移除。一般情况下,一个被观察者对应多个观察者。在MVC中,视图是观察者,模型是被观察者,当模型状态改变时,调用所有观察者的Update方法,通知视图模型有变,视图在Upd

7、ate方法里写下响应代码,完成操作。通过这个方法,视图和模型就可以在仅依赖接口的情形下进行交互,而不必强耦合,而且在模型不变的情况下,视图可以随意替换。(只要实现了IObserver)2.在MVC中另一个使用接口的地方就是控制器,这里我要首先引入一个设计模式:策略模式(Strategy)。在MVC中,控制器就使用了这个模式。刚才我说过,视图负责与用户交互,但是,它只负责界面显示部分,至于当用户做了某个操作(如单击某个按钮)后系统应该怎么反应,视图并不负责,它只是将这个动作交给控制器,控制器根据内置的策略,将用户操作翻译成模型的逻辑。这就是说,同一个视

8、图、同一种操作,模型可以做出不同的反应,这取决与控制器的内置策略。所以,我们的系统中可以有很多控制器,它们有

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。