庄生晓梦

庄生晓梦迷蝴蝶

博客园 首页 新随笔 联系 订阅 管理
  164 随笔 :: 3 文章 :: 1 评论 :: 74038 阅读

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   qwop  阅读(214)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示