A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 binghaiwang 于 2013-7-23 14:13 编辑
  1. class Single{
  2.         private static Single s = null;
  3.         private  Single(){}
  4.         public  static  Single getInstance()   
  5.         {
  6.                 if(s==null)
  7.                 {
  8.                    synchronized(Single.class)
  9.                         {
  10.                                 if(s==null)
  11.                                         s = new Single();
  12.                         }                        
  13.                 }
  14.                 return s;
  15.         }
  16. }

  17. class SingleDemo{
  18.         public static void main(String[] args)
  19.                 {
  20.                         
  21.                    Single        p = Single.getInstance();  // 构造函数私有化,除了此方法对调用方法进行别名定义, 还有其他什么方式吗?此方式是最优的嘛?
  22.                
  23.                 }
  24. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

10 个回复

正序浏览
对于单例设计模式有两个方式:懒汉式和饿汉式其中你所写的是懒汉式,没有饿汉式的用途多
回复 使用道具 举报
陈贺 中级黑马 2013-7-23 14:27:39
9#
楼主编辑过了,这样的话只能用类名.方法名调用了。
回复 使用道具 举报
郭俊 中级黑马 2013-7-23 14:17:37
8#
尹桥印 发表于 2013-7-23 13:49
final?我没明白你的意思

不对 ,是楼主更改了 代码,及内容中的问题
回复 使用道具 举报
郭俊 中级黑马 2013-7-23 14:13:10
7#
尹桥印 发表于 2013-7-23 13:49
final?我没明白你的意思

额 ,我回答错帖子了,我晕:'(
回复 使用道具 举报
郭俊 发表于 2013-7-23 12:06
写法有点让我纳闷,感觉你这个像是单例,但是又加了final ,以下是一个单例是单例的话,那么可以通过将属性 ...

他这个就是单例模式,你的是饿汉式,他的是懒汉式,并且是解决了多线程安全隐患的格式
回复 使用道具 举报
调用方法只有两种方式:
1,创建对象用对象去调用方法
2,写静态方法,用类名去调用
此处是单例模式中的懒汉式,所以构造函数的私有的,也就代表着此类无法创建对象了,并且类中方法是静态的。
只能用第二种的类名.方法名调用了
已经学的基础里不知道还有别的方法可以调用。或许还有我没学习到的
回复 使用道具 举报
没明白楼主的意思
回复 使用道具 举报
写法有点让我纳闷,感觉你这个像是单例,但是又加了final ,以下是一个单例
  1. class Single { //这是一个单例模式
  2.   private static Single instance=new Single();
  3.   private Single(){}
  4.   static Single getInstance() {
  5.       return instance;
  6.   }
  7. }
复制代码
是单例的话,那么可以通过将属性设置为public的,或者构建get,set方法来调用其中的属性。
回复 使用道具 举报
私有只有在本类中才能调用,别的类即使建立了对象也无法访问。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马