面向对象设计-第六节:设计关联和设计优化

Posted 快乐江湖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象设计-第六节:设计关联和设计优化相关的知识,希望对你有一定的参考价值。

文章目录

一:设计关联

(1)关联

A:定义

在对象模型中,关联是联结不同对象的纽带,它指定了对象相互间的访问路径

B:确定实现关联的策略

  • 选定一个全局性的策略统一实现所有关联
  • 分别为每个关联选择具体的实现策略,以与它在应用系统中的使用方式相适应

(2)使用关联的方式

A:关联的遍历

  • 单向遍历
  • 双向遍历

B:实现单向遍历

  • 若关联的重数是一元的,则实现关联的指针是一个简单指针
  • 若关联的重数是多元的,则需要用一个指针集合实现关联

C:实现双向关联

  • 只用属性实现一个方向的关联:如果两个方向遍历的频度相差很大,而且需要尽量减少存储开销和修改时的开销,则这是一种很有效的实现双向关联的方法
  • 两个方向的关联都用属性实现:这种方法能实现快速访问。当访问次数远远多于修改次数时,这种实现方法很有效

  • 用独立的关联对象实现双向关联:关联对象不属于相互关联的任何一个类,它是独立的关联类的实例

D:关联对象的实现

①:定义

用一个关联类来保存描述关联性质的信息,关联中的每个连接对应关联类的一个对象

②:方法

  • 对于一对一的关联,关联对象可以与参与关联的任一个对象合并
  • 对于一对多的关联,关联对象可以与多端对象合并
  • 对于多对多的关联,关联链的性质不可能只与一个参与关联的对象有关

二:设计优化

(1)确定优先级

A:必要性

系统的各项质量指标并不是同等重要的,必须确定各项质量指标的优先级,以便在优化设计时制定折中方案。系统的整体质量与制定的折中方案密切相关。最终产品成功与否,在很大程度上取决于是否选择好了系统目标

B:方法

在效率和清晰度之间寻求适当的折中方案。在折中方案中设置的优先级应当是模糊的

(2)提高效率的几项技术

  • 增加冗余关联以提高访问效率
  • 调整查询次序
  • 保留派生属性

(3)调整继承关系

A:继承关系

继承关系能够为一个类族定义一个协议,并能在类之间实现代码共享以减少冗余。一个基类和它的子孙类在一起称为一个类继承。在面向对象设计中,建立良好的类继承是非常重要的。利用类继承能够把若千个类组织成一个逻辑结构

B:建立类继承

①:抽象与具体

在设计类继承时,很少使用纯粹自顶向下的方法,通常的做法如下:

  • 创建满足具体用途的类,然后对它们进行归纳
  • 归纳出一些通用的类以后,根据需要再派生出具体
  • 进行一些具体化的工作后,再次归纳

②:为提高继承程度而修改类定义

在一组相似的类中存在公共的属性和公共的行为时,可以把这些公共的属性和行为抽取出来放在一个共同的祖先类中,供其子类继承,在对现有类进行归纳的时候,要注意下述两点:

  • 不能违背领域知识和常识
  • 应该确保现有类的协议不变

③:利用委托实现行为共享

仅当存在真实的一般一特殊关系(子类确实是父类的一种特殊形式) 时,利用继承机制实现行为共享才是合理的

以上是关于面向对象设计-第六节:设计关联和设计优化的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript程序设计 第六节 函数

JavaScript程序设计 第六节 函数

JavaScript高级程序设计-第六章面向对象的程序设计

第六章 面向对象的程序设计

读书笔记 - js高级程序设计 - 第六章 面向对象的程序设计

第六章-面向对象的程序设计—创建对象