庄生晓梦

庄生晓梦迷蝴蝶

博客园 首页 新随笔 联系 订阅 管理

1.公有类永远都不应该暴露可变的域.如果域是不可变的,暴露公有类的危害就要小一些.
但是,有时候需要用包级私有的或者私有的嵌套类来暴露域,无论这个类是否可变
2.如果公有类暴露了它的访问域,要想在将来改变其内部表示法是不可能的,因为公有类的客户端代码已经遍布隔出来

当域被读取的时候,强加约束

public final class TimeManager {
    private static final int HOURS_PER_DAY = 24;
    private static final int MINUTES_PER_HOURS = 60;

    public final int hour;
    public final int minute;

    public TimeManager(int hour,int minute){
        //当公有类的暴露域被读取的时候,强加约束
        if(hour < 0 || hour >= HOURS_PER_DAY)
            throw new IllegalArgumentException("hour:" + hour);
        if(minute<0||minute>=MINUTES_PER_HOURS)
            throw new IllegalArgumentException("min:"+minute);
        this.hour = hour;
        this.minute = minute;
    }
}
posted on 2017-02-28 21:12  qwop  阅读(213)  评论(0编辑  收藏  举报