zoukankan      html  css  js  c++  java
  • 常量接口模式

    在一个软件系统中会使用一些常量,一种流行的做法是把相关的常量放在一个专门的常量接口中定义,例如:

    package com.FinalInterface;
    
    public interface MyConstants {
        public static final double MATH_PI = 3.1415926;
        public static final double MATH_E = 2.71828;
    
    }

    以下Circle类需要访问以上MATH_PI常量,一种方式是采用"My-Constants.MATH_PI"的形式,如下:

    package com.FinalInterface;
    
    public class Circle {
        private double r;//半径
        public Circle(double r){
            this.r = r;
        }
        public double getCircumference(){
            return 2 * r * MyConstants.MATH_PI;
        }
    }

    还有一种方式是让Circle类中实现MyConstants接口,如下:

    inport mypack.myConstants;
    public class Circle inplenments MyConstants{
         private double r;
         public Circle (double r){this.rar;}
         public double getCircumference () {return *2 * r * MATH_PI;}
         public double getArea(){return r*r * MATH_PI;}
    }

    第二种方式使得Circle类继承了MyConstants接口的常量,可以在程序中直接引用常量名,但这种方式违背了面向对象的封装思想,MATH_PI常量是Circle类的实现细节的一部分,仅仅在计算圆周长和圆面积是才会用到,没有必要向外界公开MATH_PI常量.这其实是一种向外界泄露实现的行为,会絮儿系统的可维护性. 在JDK1.5中因为了 import static 语句,它允许类直接访问另一个接口B或类B中的静态常量,而不必指定接口B或类B的名字,而且类A无须实现接口B或者继承类B。如下:

    package com.FinalInterface;
    import static com.FinalInterface.MyConstants.*;
    public class Circle {
        private double r;//半径
        public Circle(double r){
            this.r = r;
        }
        public double getCircumference(){
            return 2 * r * MATH_PI;
        }
    }

     import static 语句既可以简化编程,又能防止Circle类继承并公开MyConstants中的静态常量。

  • 相关阅读:
    CSS 去掉文字选中状态
    解决MAC系统升级导致COCOAPODS失效问题
    qr-mili Tekniskt stöd
    JavaScript 随笔
    Https 单向验证 双向验证
    git 常用指令
    h5或者微信端吊起app
    创建本地服务器环境
    jenkins 关闭和重启的实现
    jenkins 忘记用户名和密码
  • 原文地址:https://www.cnblogs.com/jingpeipei/p/5578302.html
Copyright © 2011-2022 走看看