不必太过执着于抽象。对象之间的关系,不外乎是继承和关联两类关系,而不仅仅是只有抽象继承一种关系。这里的继承并不是指.net的继承,从设计意义上来说class继承和使用interface都叫做抽象。而对象的关联关系则有组合这种特别的形式。在足足30年的软件工程历史中,抽象并没有作为主流编程语言的标准功能,原因就是早期的smalltalk之类的语言编译器编译出来的代码运行太慢。

解决方案 »

  1.   

    反之,如果自然语言分析模型就是抽象继承的(计算机编程外行都能听懂抽象继承模型),那么学过OOAD的人就要尽可能用OOPL来反映抽象继承。如果遇到一个人用组合来反映这种继承性,我们只是说其建模比较笨拙,但还不算是怪胎。
      

  2.   

    讨论对象之间的静态关系,实际上是非常简单的,也就占OO技术的百分之十,顶多是百分之二十。但是我们最常看到的现象是,许多人都是停留在静态建模技术上念念不忘,而并没有对OOAD的动态建模技术具有理解和运用。动态建模,才是设计的本质。静态建模只是统一数据的结构和术语,但是动态才是直接对应编程的。可是,大多数学习OO的人对静态概念非常“标准”,而动态分析技术则不太理解,或者理解了概念却怎么想不清楚如何使用。所以要注意,不要停留在给对象分类和命名(贴标签)上。QQ、淘宝为什么非常不容易复制,不是因为其给对象的分类明明雷人,而是因为行家分析器行为规范会发现非常复杂但是又很好用。如果因为给对象分类命名就沾沾自喜,那么可以做大学教授去讲课,但是未必可以做用出一个好的软件工程系统来。
      

  3.   

    mvc其实不过是一种抽象,他抽象用户得请求送去处理然后返回结果这样一个流程,让用户只晓得用人会处理,但是不晓得,谁会处理,然后处理后会返回信息,具体什么信息根本不管,他所以提炼出得东西,就是mode,一系列处理,和view一系列视频,这样一个mode可以对应,不同得view,对于一种请求,也能对应不同mode,对于不同mode,对应不同得处理结果,但是,这种构架方式不十分好。系统中,仍然存在很多耦合度。
    而太阳型构架则不同,所以模块依赖中心点,而且只依赖中心点,这样程序得耦合度最小