直入主題:
分析:程式的關鍵是在構造方法上使用了private構造,對於private構造的特點,只能夠在本類中使用。
特點:構造方法私有化,外部無法產生新的例項物件,只能夠呼叫static方法來獲得物件的引用。
餓漢模式:不管程式中是否有物件需要使用此類,此類物件都已經例項化好了。
懶漢模式:在第一次使用的時候才會例項化。
/** * 單例設計 - 餓漢模式 */class Singleton{ private static final Singleton INSTANCE = new Singleton(); public static Singleton getInstance(){ return INSTANCE; } private Singleton(){ } public void print(){ System.out.println("單例設計"); }}public class TestDemo { public static void main(String[] args) { Singleton singleton = Singleton.getInstance(); }}
/** * 單例設計 - 懶漢模式 */class Singleton{ private static Singleton INSTANCE = null; public static Singleton getInstance(){ if(null != INSTANCE ){ return new Singleton(); } } private Singleton(){ } public void print(){ System.out.println("單例設計"); }}public class TestDemo { public static void main(String[] args) { Singleton singleton = Singleton.getInstance(); }}
/** * 多例模式 */public class Sex { private String title; private static final int Sex_M = 1; private static final int Sex_F = 2; private static final Sex SEX_M = new Sex("男"); private static final Sex SEX_F = new Sex("女"); private Sex(String title){ this.title = title; } public String toString(){ return this.title; } public static Sex getInstance(int str){ if(str == Sex_M){ return SEX_M; }else if(str == Sex_F){ return SEX_F; } return null; }}class DerTest{ public static void main(String[] args) { Sex sex = Sex.getInstance(1); }}
總結:
不管是單例模式還是多例模式,本質就一個,構造方法私有,內部產生例項化只不過是,單例只產生一個物件,多例會產生多個物件。
對於單例,多例更希望的是理解他的設計出發點,限制物件的產生。
最新評論