代码改变世界

分层、实体类与耦合!

2008-08-27 21:44  金色海洋(jyk)  阅读(3643)  评论(25编辑  收藏  举报

 

     三层,层与层之间的耦合确实弱了,那么为什么有时候修改起来会很麻烦呢?就是当字段有变化的时候,层层都需要修改,这到底是为什么呢?

 

     看了园子里的一篇讲解耦合的文章(不好意思,忘记是谁写的了),没事的时候又合计了一下,终于知道了,原因在于耦合!不是层与层之间的耦合,而是层与实体类的耦合,这个耦合如果没弄错的话,还是最糟糕的内容耦合!所以才造成了不便于修改。

 

     不知道我的理解有没有错误,欢迎板砖,呵呵。先发在首页一下下。

 

     如果我的理解是对的呢,那么就是给大家提个醒。如果是错误的呢,就当我没说好了。我没有真正写过三层的程序,只是看过同事写过,恩,看他们的代码很郁闷。看大家的帖子,好像也是承认,当数据库有变化的时候,三层确实不好应对,要修改几个层里的代码。不知道大家有没有想过原因,为什么每个层里都要改代码呢?这是我想出来的原因,不知道对不对。抛出来请大家讨论一下。

 

 


 

 

 补充。看了大家的评论,有几点我想澄清一下:

1、我没有说三层一无是处,完全不可取。三层当然有他好的地方了,我没有否认他的优点呀。

 

2、看大家的回复,还是基本上认同了三层对于字段上的变化,是不太好应对的。那么有没有想一下原因,有没有想过要改进一下!?有不足就放在那里不管了吗?或者认为这是合理的,是必要的,是不可避免的?当然有些人用反射、用一些方法来尽量避免大量数据的改动,那么这些改进是不是每个人都掌握了呢?

 

3、旁观者清、当事者迷,我在外面是有点站着说话不腰疼的感觉,但是我只是把我的想法说出来罢了。

 

4、找到了那片讲解偶的文章 谈谈系统中的耦合以及从另一个角度来解释姜同学的疑虑 。原来是亚同学的文章,居然没有记住,罪过罪过。

 

以下是引用:

 

公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。

内容耦合:如果发生下列情形,两个模块之间就发生了内容耦合

(1) 一个模块直接访问另一个模块的内部数据;

(2) 一个模块不通过正常入口转到另一模块内部;

(3) 两个模块有一部分程序代码重迭(只可能出现在汇编语言中);

(4) 一个模块有多个入口。

 

 标记耦合,数据耦合是ok的,内容耦合是最糟糕的,控制耦合和环境耦合其次。

 

引用完毕。

 

 

2