泛化关系
较为模糊的用例关系,某些标准直接将其限制成了类之间的关系,而不允许在用例之中使用。感觉上一般主要有两个角度:
- 正常用例和各种异常处理用例;
- 某个抽象功能根据不同子类别转换成相应的具体功能;
异常处理很好理解,主要想谈谈抽象功能与具体功能。
这种情况下的泛化,我感觉就是类似于质值的互相转化。根据值的不同采取不同的处理方式是非常常见的函数段:
switch(var)
{
case val0:
do sth;
break;
case val1:
do sth;
break;
case val2:
do sth;
break;
default:
//nop
;
}
我觉得,所谓的泛化有点类似更广义上的质成为了质量,而狭义的质则成了其质,然后成为了一种关于它们之间的switch关系。
switch(moreGeneralType)
{
case type0:
do sth;
break;
case type1:
do sth;
break;
case type2:
do sth;
break;
default:
//nop
;
}
见过比较多的情况是用于处理类似的情况,
【例如CPU模拟器中的指令向量,将各种不同的指令的都抽象成“指令”,然后建立一个数组,基类中定义exec()虚函数,由每个自类来进行相应的实现,最后再遍历这个“指令”数组,分别调用每个“指令”的exec()函数,达成对CPU顺序执行指令的模拟】。