什么是堕落类?

时间:2011-07-25 01:25:15

标签: oop class language-agnostic

既然没有人问过,我还没有找到合适的答案;简单地说:什么是退化类?

各种语言的示例会有所帮助......除了UML。 :P

2 个答案:

答案 0 :(得分:8)

我也在寻找一个明确的答案,这是我迄今为止对Google的理解:

在数学中,简并表示极限情况,其中一类对象改变其性质以便属于另一种,通常更简单,类

  • 当半径接近0时,该点是圆的简并情况
  • 当偏心率接近0时,圆是椭圆的简并形式

在编程中,遵循“折叠”的概念。在简单的事情中,简并似乎以多种方式使用:

1。没有方法或只有主方法的类:

Big Java:

  

最后,您已经看到只有主方法的类。他们唯一的目的是启动一个计划。从设计的角度来看,这些是类的简单例子。

Effective Java 2nd edition:

  

第14项:在公共课中,使用访问者方法,而不是公共字段

     

偶尔,您可能会想要编写退化类   除了分组实例字段之外没有任何其他目的:

// Degenerate classes like this should not be public!
class Point {
  public double x;
  public double y;
}

2。一个具有较低特异性的类,使其表现得像另一个更简单的类:

Learning Java:

  

例如,List和List的类共享普通的旧Java类List。 List被称为泛型类的原始类型。每个泛型都有一个原始类型。 它是简并的“普通”Java表单 ,从中删除了所有泛型类型信息,并将类型变量替换为像Object这样的通用Java类型。

Effective Java 2nd edition:

// The worst possible legal hash function - never use!
@Override public int hashCode() { return 42; }
  

这是合法的,因为它确保了相等的对象具有相同的哈希码。这很糟糕,因为它确保每个对象都具有相同的哈希码。因此,每个对象都会散列到同一个存储桶, 散列表会退化为链接列表

3。可能的最简单,最空洞的实例:

Big Java:

  

但是,有时你会遇到处理 退化输入的哲学问题:空字符串,没有区域的形状 ,等等。

答案 1 :(得分:2)

here猜测这是一个没有行为的类(即没有方法)。