首頁>技術>

直入主題:

  分析:程式的關鍵是在構造方法上使用了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);    }}

總結:

  不管是單例模式還是多例模式,本質就一個,構造方法私有,內部產生例項化只不過是,單例只產生一個物件,多例會產生多個物件。

  對於單例,多例更希望的是理解他的設計出發點,限制物件的產生。

8
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 「創業工具2」微軟開源CMS,詳細用法