JAVA 設計模式—單例模式

來源:互聯網
上載者:User

標籤:模式   簡單介紹   return   nbsp   初始化   bsp   void   單例模式   執行個體   

JAVA中的單例模式是一種廣泛使用的設計模式,是Java裡23種設計模式之一。單例模式的作用是保證在JAVA程式中,某個類只有一個程式存在。

這裡簡單介紹其兩種基本寫法:餓漢式和懶漢式。

餓漢式與懶漢式區別在於餓漢式在類載入時就對執行個體進行建立,優點是安全執行緒,缺點是不管用不用都佔用記憶體;懶漢式是單例在需要的時候採取建立的,如果單例已經建立,再次調用將不會建立新的對象,而是直接返回之前建立的對象,優點是佔用記憶體小,缺點是載入速度慢,線程不夠安全;

這裡以車舉例,同時定義一個成員變數司機來證實唯一性。

餓漢式

public class Car {  //建立車類    private String driver;  //定義成員變數司機名    private static Car car = new Car()  //直接在初始化成員變數時執行個體化一輛車;    private Car() {  //為保證車的唯一,將構造方法設為私人的,這樣類外面就無法使用new Car()來執行個體化一輛車了;            }    public static Car getCar() {  //定義一個公開的成員方法,用來擷取這輛車;                return car;    }    public String getDriver() {        return driver;    }    public void setDriver(String driver) {        this.driver = driver;    }}

懶漢式

public class Car {      private String driver;      private static Car car;  //定義成員變數車,其類型是類本身;預設為null    private Car() {              }    public static Car getCar() {          if (car == null) {  //當這輛車指向為null時,執行個體化一輛車,如果不是null,返回這輛車;            car = new Car();        }        return car;    }    public String getDriver() {        return driver;    }    public void setDriver(String driver) {        this.driver = driver;    }}

測試

public class Test{    public static void main(String[] args) {                Car car1 = Car.getCar();  //直接用類名調用靜態方法擷取一輛車;對象名為car1        Car car2 = Car.getCar();  //再次調用方法擷取一輛車;對象名為car2        car1.setDriver("小明");  //將car1的司機命名為小明        System.out.println(car2.getDriver());  //列印car2的司機名仍然是小明,說明這兩輛車是同一輛車,也就證明了這輛車的唯一性。                }            }

 

JAVA 設計模式—單例模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.