本章节可以跳过,但是【二十一】是非常有价值的
十九、用类代替结构
坚持以包含私有域和公有访问方法(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; } }
类层次的另一个好处是代码非常简洁明了,如上所示。