《道法自然》第六章读后感

来源:互联网 发布:富甲天下4武器数据 编辑:程序博客网 时间:2024/04/28 01:24

第六章 架构分析:功能分解vs对象分析

    两个收获:

    1、功能分解是一种纵向分层,对象分析则完全可以通过合理的组合形成横向分层。纵向分层中,每一层均是一杆子从上直到下,从界面直到数据库,显然给软件的分析、维护带来了极大的困难,更不利于软件的功能扩展。而横向分层,层间耦合完全可以通过适当的组合达到最少,并且通过限制层间关系,使单个层的实现简单化、易替换,便于团队协作开发大型软件。

    2、层、子系统和包的概念,以前一直非常糊涂。现在总算弄清了:一般来说,层>子系统>包。这三个概念无非是对象封装概念的外延。

    包不过是各个功能相似的类的聚合;

    子系统与类的主要区别:只能被动接受消息,不能主动发送消息,即子系统是一个完全封闭的系统。两点注意:1)注意与面向过程分析所划分的子系统是完全不同的;2)子系统设计本质上是OO设计的范围,而不是OO分析的范围。

    层与类的主要区别:层只能按约定,向相邻层发送或接收消息。

    从上述理解来看:除最底层可以单独作为一个子系统外,其余层均无法单独作为子系统,而只能包含子系统。

    两点疑惑:

    1)子系统必须实现一个接口,这个观点很好,但如何实现接口呢?又如何来调用这个接口呢?是不是必须显式地定义接口?有的子系统包括几个类或包,几个类或包如何实现一个接口?

    2)MVC框架在概念上是理解了,但尤其VC的实现,存在诸多耦合,比如说单击一个按钮后,可能不仅要执行一个操作,而且要改变某个窗口颜色。当然可以将视图层的单击事件分解为两个事件:调用视图层的改变颜色方法,调用模型层的逻辑处理。但有好多操作都不过简单到了一句话,这样太罗嗦了。是不是应该这样:形成M--V--VC架构,V主要实现核心逻辑功能(不论采用哪种界面一定会有的功能,如计算总值);而VC中实现次要的、不稳定的逻辑功能?

原创粉丝点击