Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android開發之單件模式

Android開發之單件模式

編輯:Android開發實例

  單件/例模式是所有設計模式中可以說是最簡單最易懂的一種編程方式 ,想保證某個特定類的對象實例絕對只有一個時,想在程序上表達出對象實例只會有一個時,這種做法就被稱為單件/例模式。

  Singleton 是指只有1個元素的集合。就是因為它只會有1 個對象實例,因而得名。

  由於其簡單性,在此就不把UML圖畫出來了。本篇共涉及兩個類,一個為測試單件/例模式的類,一個為普通類,用來區分單例模式與普通對象的區別。

  單件/例 類 Singleton

  public class Singleton {
      private static  Singleton singleton=new Singleton();
      
      private Singleton(){
       
          System.out.println("對象己產生");
      }
      public static  Singleton getInstance(){
          return singleton;
      }
  }

  該類把singleton 定義為靜態字段,再以Singleton 類的對象實例進行初始化,這個初始化的操作僅在加載Singleton 類時進行一次。

  類的構造函數為私有的,主要是為了禁止從非Singleton 類調用構造函數。所以直接使用new Singleton() 會發生編譯的錯誤 。

  單件/例 模式存在的必要只是為了確保對象只產生一個實例,如果編碼小心該模式一般沒什麼存在的必要,但誰能保證呢?存在即合理。

  normal 類是一個空類

  public class normal {

  }

  android 界面入口測試該 單件/例模式 SingletonPatternActivity 類

  public class SingletonPatternActivity extends Activity {

      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState); 
          setContentView(R.layout.main);

          ((Button) findViewById(R.id.Button01))
                  .setOnClickListener(new OnClickListener() {

                      @Override
                      public void onClick(View v) {
                          // TODO Auto-generated method stub
                          Singleton obj1=Singleton.getInstance();
                          Singleton obj2=Singleton.getInstance();
                       
                       
                          normal obj3=new normal();
                          normal obj4 =new normal();
                          if(obj1==obj2){
                              ((EditText) findViewById(R.id.EditText01)).setText("obj1和obj2是同一對象實例");
                          }
                          else {
                              ((EditText) findViewById(R.id.EditText01)).setText("obj1和obj2不是同一對象實例");
                          }
                       
                          if(obj3==obj4){
                              ((EditText) findViewById(R.id.EditText02)).setText("obj3和obj4是同一對象實例");
                          }else {
                              ((EditText) findViewById(R.id.EditText02)).setText("obj3和obj4不是同一對象實例");
                          }
                       
                      }
                  });

      }
  }

  該模式經常在編寫 android 應用時,如果應用有使用Application用得比較多,詳細的代碼可以參考jamendo 開源播放器,裡面就有在Application裡面使用單件/例 模式。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved