歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android源碼分析之單例模式

模式的定義

確保某一個類只有一個實例,而且自行實例化並向整個系統提供這個實例。

使用場景

確保某個類有且只有一個對象的場景。

UML類圖

角色介紹

Singleton : 單例類.

簡單示例

單例模式是設計模式中最簡單的,只有一個單例類,沒有其他的層次結構與抽象。該模式需要確保該類只能生成一個對象,通常是該類需要消耗太多的資源或者沒有沒有多個實例的理由。例如一個公司只有一個CEO、一台電腦通常只有一個顯示器等。下面我們以公司裡的CEO為例來簡單演示一下,一個公司可以有幾個VP,無數個員工,但是CEO只有一個,請看下面的實現代理 :

package com.dp.example.singleton;
/**
 * 人的基類
 * @author mrsimple
 *
 */
public abstract class Person {
 public abstract void talk() ;
}

// 普通員工
public class Staff extends Person {

 @Override
 public void talk() {

 }

}

// 副總裁
public class VP extends Person {

 @Override
 public void talk() {

 }
}

// CEO, 單例模式
public class CEO extends Person {

 private static final CEO mCeo = new CEO();

 private CEO() {
 }

 public static CEO getCeo() {
  return mCeo;
 }

 @Override
 public void talk() {
  System.out.println("CEO發表講話");
 }

}

// 公司類
import java.util.ArrayList;
import java.util.List;

public class Company {
 private List<Person> allPersons = new ArrayList<Person>();

 public void addStaff(Person per) {
  allPersons.add(per);
 }

 public void showAllStaffs() {
  for (Person per : allPersons) {
   System.out.println("Obj : " + per.toString());
  }
 }
}

// test
public class Test {
 public static void main(String[] args) {
  Company cp = new Company() ;
  Person ceo1 = CEO.getCeo() ;
  Person ceo2 = CEO.getCeo() ;
  cp.addStaff(ceo1);
  cp.addStaff(ceo2);
 
  Person vp1 = new VP() ;
  Person vp2 = new VP() ;
 
  Person staff1 = new Staff() ;
  Person staff2 = new Staff() ;
  Person staff3 = new Staff() ;
 
  cp.addStaff(vp1);
  cp.addStaff(vp2);
  cp.addStaff(staff1);
  cp.addStaff(staff2);
  cp.addStaff(staff3);
 
  cp.showAllStaffs();
 }
}

輸出結果

可以看到, CEO兩次輸出的CEO對象的文字描述都是一樣的,而VP、Staff類的對象都是不同的。即CEO是唯一實例,而其他類型都是不同的實例。

 

Android-x86 4.4-r1 發布下載,kitkat-x86 首個穩定版 http://www.linuxidc.com/linux/2014-08/105349.htm

  • Android-x86虛擬機安裝配置圖文教程 http://www.linuxidc.com/Linux/2013-05/84613.htm
  • VirtualBox安裝 Android-x86 4.0圖解教程 http://www.linuxidc.com/Linux/2014-06/103262.htm
  • VirtualBox虛擬機試用Android-x86 4.4 RC1方法 http://www.linuxidc.com/Linux/2014-02/96804.htm

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-09/106151p2.htm

Copyright © Linux教程網 All Rights Reserved