单例模式的构造方法为什么私有 引用为什么设置为pravite static 属性为什么都要private

第一个问题: 类中的属性为什么设置为private的:

主要是第二点吧 如果我getXXX里面对属性直接进行了操作或者加密,其他类调用的时候是看不懂的。起到一个封装的作用。

(1)由于很多框架都是调用这两个方法来实现沟通,这是一种习惯了。
(2)get/set方法也不一定只是简单的作一个赋值,或一个返回值吧,在这里可以作一些权限的控制,比如不是每个角色都可以赋值的。再比如返回的值不一定是值本身,可以是经过处理了的,比如加密,这用public定义是不能作到的。

第二个问题:单例模式的构造方法为什么私有

    很多地方说是为了防止new多个对象这个说法本身是错误的  ,构造方法设置为私有 可以在当前类中new多个对象啊

   查阅资料发现是因为 private以后  每次new对象的时候都要调用构造方法 而private的权限是当前类 那么其他类new对象的时候一定会失败

第三个问题 引用为什么设置为private  static  不加static可以吗

    static 必须有  因为单例模式的方法是static 调用的属性必须是静态属性 如果不是静态属性 会发生指令重排序 导致先调用方法后加载属性 ,加载不到属性就会报错,同时static本质上是为了全局唯一,

   设置成private是考虑封装性,防止在外部类中进行初始化 也就不是单例了


版权声明:本文为zcw4237256原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。