• 第19条:接口只用于定义类型


    当类实现接口,接口就充当可以引用这个类的实例的类型。因此,类实现了接口,就表明客户端可以对这个类的实例实施某些动作,为了其他任何目的而定义接口是不恰当的。

    有一种常量接口,它不包含任何方法,只包含静态的final域,每个域导出一个常量,使用这些常量的类实现这个接口,以避免用类名来修饰常量名:

    public interface PhysicalConstants {
        static final double AVOGADROS_NUMBER = 6.022e23;
        static final double BOLTZMANN_CONSTANT = 1.380e-23;
        static final double ELECTRON_MASS =  9.109e-31;  
    }

    这是对接口的不良使用,类在内部使用这些常量,是实现细节,不应该将实现细节暴露到该类的导出API中。

    导出常量的几种方案:

    1.如果常量与某个现有的类或者接口紧密相关,就应该把这些常量添加到这个类或者接口中,如Integer和Double,都导出MIN_VALUE和MAX_VALUE常量。

    2.如果常量被看作枚举类型,就应该使用枚举类型。

    3.否则,应该使用不可实例化的工具类来导出这些常量 :

    public class PhysicalConstants {
        private PhysicalConstants() {};
      
        static final double AVOGADROS_NUMBER = 6.022e23;
       static final double BOLTZMANN_CONSTANT = 1.380e-23;
        static final double ELECTRON_MASS =  9.109e-31;
    }

    通过类名.常量名来引用这些常量,如果大量利用工具类导出的常量,可以利用静态导入机制,1.5后才有。像import static 包名.工具类名.*;这样。

  • 相关阅读:
    UIView背景渐变三种方法
    Phone漂亮的动画
    图片处理代码片段
    UIProgressView进度条
    UIActivityIndicatorView
    NSTimer定时器类
    iPhone Tableview分批显示数据
    无限剑制
    兔子繁殖(easy)
    植树节
  • 原文地址:https://www.cnblogs.com/13jhzeng/p/5705886.html
Copyright © 2020-2023  润新知