本章节可以跳过,但是【二十一】是非常有价值的
十九、用类代替结构
坚持以包含私有域和公有访问方法(accessor method)的类。Java平台中有几个类违反了“公有类不应该直接暴露数据域”的告诫,比如,java.awt包中的Point和Dimension类。
二十、用类层次代替联合
子类型化可以定义单个数据类型,并且可以定义不同类型的对象。如下面的例子:
abstract class Shape {
abstract double area();
}
class Circle extends Shape {
final double radius;
Circle(double radius) { this.radius = radius; }
double area() { return Math.PI * radius*radius; }
}
class Rectangle extends Shape {
final double length;
final double width;
Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
double area() { return length * width; }
}
类层次的另一个好处是代码非常简洁明了,如上所示。