在Java中,我們經(jīng)常會遇到單實例和多實例的情況。單實例是指只有一個對象實例,而多實例則是指有多個對象實例。
// 單實例 public class Singleton { private static Singleton instance; private Singleton(){} // 防止被實例化 public static Singleton getInstance() { if(instance == null) { instance = new Singleton(); } return instance; } } // 多實例 public class Animal { private String name; private int age; public Animal(String name, int age) { this.name = name; this.age = age; } // 省略getter和setter方法 }
單實例常用于數(shù)據(jù)庫連接、日志記錄等對象,這些對象只需要一個實例即可滿足需求。我們通過在類中定義一個靜態(tài)變量來存儲對象實例,并提供一個公共的方法來獲取該實例。這個方法被聲明為靜態(tài)方法,所以我們可以通過類名來調(diào)用該方法。
Singleton s1 = Singleton.getInstance(); Singleton s2 = Singleton.getInstance(); System.out.println(s1 == s2); // true
多實例則是根據(jù)實際需求,需要創(chuàng)建多個對象實例。我們可以通過構(gòu)造函數(shù)傳遞參數(shù)來創(chuàng)建多個不同的實例。
Animal a1 = new Animal("cat", 3); Animal a2 = new Animal("dog", 2); System.out.println(a1.getName() + " " + a1.getAge()); // cat 3 System.out.println(a2.getName() + " " + a2.getAge()); // dog 2
在實際開發(fā)中,我們需要根據(jù)需求來選擇使用單實例或多實例。當需要共享一個公共的資源時,我們可以使用單實例來實現(xiàn)。而當我們需要創(chuàng)建多個對象實例時,則需要使用多實例的方式。