qq_36357081 2016-11-06 12:12 采纳率: 0%
浏览 879

Java中单例模式的用法

走在人间正道上 2016/11/6/周日 19:18:28
class Single{
private static Single INSTANCE=new Single();
private Single(){}
public static Single getInstance(){
return INSTANCE;
}
}
public static Single getInstance()----Single这个位置一般都是int,char,等数据类型,
Single不是数据类型,为什么放在那里

  • 写回答

3条回答 默认 最新

  • Newbie丶Chen 2016-11-06 12:35
    关注

    0 0,只要是类,都可以成为返回值呀。不一定指的是基础数据类型(String,int,boolean)等
    还有getInstance()是为了返回当前类的对象的,其他类只有获取该类的对象,才能操纵该类的方法。
    单例模式有好多写法
    ** 第一种**:类似楼主的写法

         class Single{
                public static final Single INSTANCE=new Single();
                private Single(){}
        }
    

    优点:简洁
    缺点:
    1.调用时候,不太清晰,因为java很少获取成员变量
    2.当单例模式类需要参数的时候,无法使用

    第二种

        class Single{
            private static Single INSTANCE;
            private int data;
            private Single(int data){
                this.data = data;
            }
    
            /**
            *初始化
            */
            public static Single init(int data){
                    synchronized(Single.class){
                            if (INSTANCE != null){
                                        INSTANCE = new Single(data);
                            }
                    }
            }
    
            /**
            *获取当前类的对象
            */
            public static Single getInstance(){
                if (INSTANCE == null){
                      throw new NullPointerException("not have been initialized");
                }
                else{
                      return INSTANCE;
                }
            }
        }
    
    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮