構(gòu)造一個類,只能存在一個實例

          Posted on 2006-10-06 13:46 久城 閱讀(854) 評論(2)  編輯  收藏 所屬分類: JavaTest

          在網(wǎng)上見過這道小題,正好寢室的兄弟們在學(xué),借機會整理下!

          題目是這樣的:
          1.定義一個SigCls.java;
          2.SigCls只能存在一個實例;
          3.在構(gòu)造器中初始化兩個成員屬性;
          4.編寫TestSigCls.java測試;

          分析:
          如果構(gòu)造一個類,它只能存在一個實例,那它的構(gòu)造函數(shù)一定不能被外部訪問,也就是說它的構(gòu)造函數(shù)應(yīng)該是private的.
          如果構(gòu)造函數(shù)是private的,外部不能實例化,那就需要在類內(nèi)部定義一個方法,用來創(chuàng)建這個實例.
          既然只能存在一個實例,那么可以把這個唯一的實例定義成靜態(tài)的,這樣靜態(tài)成員只初始化一次.

          代碼:

          //SigCls.java文件
          public class SigCls
          {
          ??? private String name;
          ??? private int age;//兩個成員屬性
          ??? private static SigCls inst;//聲明靜態(tài)實例

          ??? private SigCls(String aName, int aAge) {
          ??????? name = aName;
          ??????? age = aAge;//初始化兩個成員屬性
          ??? }

          ??? public String getName() {
          ??????? return name;
          ??? }

          ??? public int getAge() {
          ??????? return age;
          ??? }

          ??? public static SigCls getInstance() {
          ??????? if (inst == null)
          ??????? {
          ??????????? System.out.println("none");
          ??????????? inst = new SigCls("xiaozhang", 19);//初始化實例
          ??????????? return inst;
          ??????? }
          ??????? else
          ??????? {
          ??????????? System.out.println("Sig");
          ??????????? return inst;
          ??????? }
          ??? }

          }

          //TestSigCls.java文件
          public class TestSigCls
          {
          ?public static void main(String[] args)
          ?{
          ???????? SigCls sc1;
          ??????? ?SigCls sc2;
          ??????? ?sc1 = SigCls.getInstance();
          ???????
          ?????? ??sc2 = SigCls.getInstance();

          ??????? ?System.out.println(sc1.getName());
          ??????? ?System.out.println(sc2.getName());

          ?}
          }

          應(yīng)該還有其他的方法,有待研究!



          歡迎來訪!^.^!
          本BLOG僅用于個人學(xué)習(xí)交流!
          目的在于記錄個人成長.
          所有文字均屬于個人理解.
          如有錯誤,望多多指教!不勝感激!

          Feedback

          # re: 構(gòu)造一個類,只能存在一個實例  回復(fù)  更多評論   

          2006-10-06 16:26 by JonneyQuest
          傳說中的單例模式……如果學(xué)過Java模式就會發(fā)現(xiàn)這個并不難。

          # re: 構(gòu)造一個類,只能存在一個實例  回復(fù)  更多評論   

          2006-10-12 00:47 by 黑蝙蝠
          學(xué)習(xí) 學(xué)習(xí) 呵呵!準(zhǔn)備把一個數(shù)據(jù)庫連接類 作為單列

          Copyright © 久城

          主站蜘蛛池模板: 舞阳县| 商南县| 镶黄旗| 东乡县| 怀仁县| 彭阳县| 和政县| 云和县| 石景山区| 湘潭市| 托里县| 磐安县| 博白县| 观塘区| 青铜峡市| 江华| 昆明市| 尉犁县| 府谷县| 天等县| 新丰县| 福清市| 故城县| 南涧| 平乐县| 万载县| 庄浪县| 扶绥县| 绥芬河市| 合肥市| 兴仁县| 塔河县| 长沙县| 阜新市| 咸宁市| 治多县| 牙克石市| 宜宾县| 克什克腾旗| 正宁县| 五寨县|