单例设计模式及应用

来源:互联网 发布:nba马刺vs小牛数据 编辑:程序博客网 时间:2024/05/22 02:09
/*
单例设计模式:本类中只创建一个对象,外部通过方法只调用,改变,这一个对象
*/
class Single{              //饿汉式
 //创建一个本类对象
 private static Single s = new Single();
 //构造函数私有化,外界不可访问,不可创建对象
 private Single(){}
 //定义一个方法返回该对象,让其程序可以获取到
 public static Single getInstance()             //返回值为该类                      静态方法不能访问非静态变量
 {
  return s;
 }
}            
public class Demo {
       public static void main(String[] agrs)
       {
        Single s=Single.getInstance();              //只创建一个对象,只用一个对象,通过方法形成可控。
       }  //定义一个这个类的变量   = 对象创建在本类中为私有,外部不可访问,通过类名.getInstance,来访问                                            
}
/*
class Single{                    //懒汉式(延迟加载)
      private static Single s = null;
     
      private Single(){}
     
      static Single getInstance()
      {
         if(s==null)
         {
            s=new Single();
         }
         return s;
      }
}
public class Demo{
    public static void main(String[] agrs)
    {
       
    }
}
*/


/*
 * 单例设计模式应用
 *
 */
class superMan{
 private String name;
 private static superMan s = new superMan("lalala");
 private superMan(String name)
 {
  this.name=name;
 }
 public static superMan getInstance()
 {
  return s;
 }
    public void setName(String name)
    {
     this.name=name;
    }
    public String getName()
    {
     return this.name;
    }
}
public class Demo2{
 public static void main(String[] agrs)
 {
  superMan s1 = superMan.getInstance();
     System.out.println( s1.getName());
     superMan s2 = superMan.getInstance();
     s2.setName("hahaha");                  //改变里面的变量
     System.out.println( s2.getName());
 }
}

原创粉丝点击