从MVC模型看设计

 

MVC模型看设计

一己薄剑 2007-06-02

我们知道MVC模型中ModelViewController之间的关系如下:

如图所示,在这个对象创建时要做的就是创建各个内部对象,然后注册各个对象之间的关系,这种关系由他们之间的交互来决定,并且决定了在接受到用户输入时他们之间交互的复杂性与有效性。

那么我们再看一下我们不用MVC模型,我们会如何处理上面三个对象之间的关系,如下图:


对比上面两种关系图,我们发现 MVC模型的对象之间的交互关系更简单一些,因为 MVC中对象之间的交互是线性的每个对象只有一个输入一个输出,而下面图中的对象之间的关系是星形的,虽然除中心以外的对象的交互更加简单了,但位于中心的对象的交互任务就十分繁重了,作为本身具有实际工作的对象,如果在给其增加额外的负担,这会增加这个对象的复杂度,使其难以维护。所以综合起来 MVC模型是简化了对象之间交互的复杂度,使得他们之间的交互更易控制。

所以有上面的分析对比可以知道,设计的两大原则:一:对象的抽象简化;二:对象之间关系的抽象简化。关于对象的抽象简化是做好设计的基础,对象抽象的好,组织的好,更容易简化对象之间的关系。那么设计一般先要分析抽象出最直接的对象,然后为了提高重用性,再细分出最基本的对象,然后在对基本的对象进行封装,简化对象的易用性,并且形成清晰的对象层次结构,到此静态的对象已经建立,接下来就是处理对象之间的关系,这一步对于对象的层次结构是有一定依赖的,对象之间的关系,

以线性关系最为简单,所以最好能够把对象之间的关系组织成线性的,但是不是所有情况都可以做到,但一般的原则,具体有自己功能的对象不该过多加入处理对象关系的功能,所以这种对象应该尽量放到线性关系中,而应该把对象之间的关系的处理再抽象出一个新的对象来专门负责,让每个参与交互的对象只直接和这个对象交互,这样每个具体的对象都是功能单一,交互单一,而这个新的对象他的职责就是负责交互,所以他也是功能单一。其实这就是星形的交互关系。这也说明星形的未必不如线性的。

只是不同的场合要用不同的模型,目的只有相同的一个-降低复杂度,增加灵活性。

所以有上面可以看出设计的目的就是用最简单的,最灵活的方法实现最强大的功能。

简单就是容易维护,容易实现;灵活就是容易应付不同的需求;强大的功能就是不限制未来一些新的需求的实现即可扩展性。

总结,设计的关键在于对象的处理,对象之间关系的处理,并且二者之间是相互影响的,在设计需要通盘考虑,而设计的目的则在于降低复杂度,增加灵活性。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值