常量接口模式
在一个软件系统中汇使用一些常量,一种流行的做法是把相关的常量放在一个专门的常量接口中定义,例如:
以下Circle类需要访问以上MATH_PI常量,一种方式是采用"My-Constants.MATH_PI"的形式,如下:
还有一种方式是让Circle类实现MyConstants接口,如下:
第二种方式使得Circle类继承了MyConstants接口的常量,因此在程序中可以直接引用常量名,无须指定MyConstants接口名,这可以简化编程.但是这种方式违背了面向对象的封装思想,MATH_PI常量是Circle类的实现细节中的一部分,仅仅在计算圆周长和圆面积是才会用到它,因此没有必要向外界公开MATH_PI常量.凡是实现MyConstants接口的类都会向外界公开MATH_PI常量,这其实是一种向外界泄露实现细节的行为,会削弱系统的可维护性.假定Circle类被100个其他的类访问,这些类都会访问Circle.MATH_PI常量,例如: