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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jiahuiting 中级黑马   /  2013-9-24 14:45  /  1344 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨增坤 于 2013-9-24 17:42 编辑

哪位能给我一个单例设计中饿汉式的完整程序。我只知道是用到
1,private  Single()
2,private  static   final   Single=new   Single();
3,public  single getInstance(){return  s;}

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

4 个回复

倒序浏览
不要为了技术分而水分,你问的这个问题视频里有讲的
  1. public final class Single//饿汉式,Single类一进内存,就已经创建好了对象。
  2. {
  3.      private static Single s = new Single();//在类中创建一个私有并静态的本类对象
  4.      private  Single(){}//私有化构造函数
  5.      public static  Single getInstance()//提供一个方法可以获取到该对象
  6.      {
  7.          return s;
  8.      }
  9. }
复制代码
  1. public final class Single//懒汉式,对象是方法被调用时,才初始化,也叫做对象的延时加载
  2. {
  3.     private static Single s = null;
  4.     private Single(){}
  5.     public static Single getInstance()
  6.     {
  7.         if(s==null)//检查实例是否存在,如果不存在进入下面的synchronized代码块
  8.         {
  9.             synchronized(Single.class)
  10.             {               
  11.                 if(s==null)//拿到锁后再次判断实例是否存在,如果不存在才创建实例
  12.                     s = new Single();
  13.             }
  14.         }
  15.         return s;
  16.     }
  17. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报 1 0
单利设计模式只是限制了建立对象的数量为一个,也就是每次使用某一个类的实例都是同一个,楼上已经给出了解决安全问题的代码了,下面给一个暂不考虑安全问题的代码咯。
public final class Single
{
     private String name;
     private int age;
     private static Single s = new Single();

     private  Single(){}//私有化构造函数

     public static  Single getInstance()//提供一个方法可以获取到该对象
     {
         return s;
     }

     public void setAge(int age)
     {
        this.age = age;
     }
     public void setName(String name)
     {
        this.name = name;
     }
     public int getAge()
     {
        return age;
     }
     public String getName()
     {
        return name;
     }
     public void toString()
     {
        return "name"+name+":"+"String"+String;
     }

}
单利设计模式只是限制了产生对象的数量,其他属性和方法已然可以像普通类一样定义。

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
饿汉式单例模式:HurrySingleton.java

package pattern.singleton;
/**
* -----------------------------------------
* @描述  饿汉式单例
* @作者  fancy
* @邮箱  fancydeepin@yeah.net
* @日期  2012-7-31 <p>
* -----------------------------------------
*/
public class HurrySingleton {

    private static final HurrySingleton INSTANCE = new HurrySingleton();
   
    //私有化构造子,阻止外部直接实例化对象
    private HurrySingleton(){
        
    }
   
    /**
     * <B>方法描述:</B>
     * <p style="margin-left:20px;color:#A52A2A;">
     * 获取类的单例实例
     * @return <span style="color: #008080;"> 返回类的唯一实例 </span>
     */
    public static HurrySingleton getInstance(){
        
        return INSTANCE;
    }
}

希望可以帮到楼主、、、

The you smile until forever 、、、、、、、、、、、、、、、、、、、、、

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
class Single
{
        private Single(){}//私有化构造函数
        private tatic Single s= new Single();//创建本类对象
        public static Single getInstance()//提供访问方式
        {
                return s;//返回给访问者
        }
}
实例:
class Single
{
        private int num;
        public void setnum(int num)
        {
                this.num = num;
        }
        public int getnum()
        {
                return num;
        }
        private Single(){}
        private tatic Single s= new Single();
        public static Single getInstance()
        {
                return s;
        }
}
class SingleDome
{
        public static void main(String[]args)
        {
                Single s1= Single.getInstance();
                Single s2= Single.getInstance();
                s1.stenum(23);
                System.out.println(s2.getnum);//打印结果为23 此时ss,s1,s2都指向同一个对象
        }
}

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马