鱼跃于渊

First know how, Second know why !
posts - 0, comments - 1, trackbacks - 0, articles - 49

单例模式(SingleTon)

Posted on 2008-12-20 18:12 鱼跃于渊 阅读(254) 评论(0)  编辑  收藏 所属分类: 设计模式
 1 package com.givetop.singleton;
 2 
 3 public class singleton {
 4 
 5 
 6  public static void main(String[] args) {
 7   Single.getSingleton().say();
 8  }
 9 
10 }
11 
12 class Single{
13  private static Single s = new Single();
14  public static Single getSingleton(){
15   return Single.s;
16  }
17  private Single(){
18   
19  }
20  public void say(){
21   System.out.println("我开始说话了!");
22  }
23 }
24 

//思想是: 所谓单例就是只有一个实例存在(把类的构造方法设为私有的,防止在类的外面new类的实例), 这样减少了内存的占有量, 而且还减轻了垃圾回收机制的负担!

下面看几个设计的不好的例子!

一.直接在类的内部设一个静态的该类的类型!

 

 1 package com.givetop.singleton;
 2 
 3 public class singleton {
 4 
 5 
 6     public static void main(String[] args) {
 7         Single.s.say();
 8     }
 9 
10 }
11 
12 class Single{
13     static Single s = new Single();
14     private Single(){
15         
16     }
17     public void say(){
18         System.out.println("我开始说话了!");
19     }
20 }

该类虽然实现了只能new一个实例但 s 属性是default的, 破坏了类的封装, 算不上是好的类的设计!
好的方法是应该把该属性设为私有的, 然后在类里面提供一个公有的方法返回这个实例


 


 


只有注册用户登录后才能发表评论。


网站导航: