首页 > 其他 > 详细

设计模式之单例模式

时间:2014-08-13 18:40:17      阅读:304      评论:0      收藏:0      [点我收藏+]

单例

属于创建型设计模式,维护一个类只出一个对象,在生活中只有一个的对象,比如:地球、太阳、宇宙等。使用单例的情况也可以是:一个类的访问次数过高,但是不改变对象的信息,就可以把这个类设成单例。

单例的方式有两种:懒汉式和饿汉式。

单例的实现方法:

第一步:把构造器变私有

第二步:把本类对象作为本类的静态属性

第三步:利用静态方法获取本类的静态属性

代码如下:

懒汉式(凯哥升级版):

优点:节约内存,如果不用这个对象,不会造成内存浪费。

缺点:调用执行较慢。

package com.cn.xfonlineclass2;

public class Dog {

       private String name;

       private int age;

       private  String sex;

       private static Dog dog=null;

       private Dog(String name,String sex,int age){

              this.name=name;

              this.age=age;

              this.sex=sex;

       }

       public static Dog getDog(){

              if(dog==null){

                     synchronized (Dog.class) {

                            if(dog==null){

                                   dog=new Dog("旺旺","雌",4);

                            }    

                     }                  

              }

              return dog;

      

       }

       public String toString(){

              return "名字是:"+name+"\t性别:"+sex+"\t年龄:"+age;

                    

              }

}

 

饿汉式:

优点:访问快、最快的将对象 new 出来。

缺点:如果不用对象,将占用内存,造成内存浪费。

package com.cn.xfonlineclass2;

public class Dog {

       private String name;

       private int age;

       private  String sex;

       private static Dog dog=new Dog("小黑","雄",3);

       private Dog(String name,String sex,int age){

              this.name=name;

              this.age=age;

              this.sex=sex;

       }

       public static Dog getDog(){

              return dog;

       }

       public String toString(){

              return "名字是:"+name+"\t性别:"+sex+"\t年龄:"+age;

                    

              }

 

}

 

测试类:

package com.cn.xfonlineclass2;

 

public class Test{

       public static void main(String[] args) {

             

                     System.out.println(Dog.getDog());

              }

}

 

注意:要把主方法从要测试的类中分离开来,若在要测试的类中创建main方法,意思是在本类中,可以访问私有变量。

 

设计模式之单例模式,布布扣,bubuko.com

设计模式之单例模式

原文:http://www.cnblogs.com/Amous/p/3910651.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!