国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Singleton設(shè)計(jì)模式 - 創(chuàng)造性設(shè)計(jì)模式

2019-11-09 13:58:29
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

顧名思義,Singleton意味著“單實(shí)例”。因?yàn)樗且粋€(gè)創(chuàng)造性的設(shè)計(jì)模式,所以這種設(shè)計(jì)模式提供了解決方案,在整個(gè)應(yīng)用程序的生命周期只創(chuàng)建一個(gè)類(lèi)的一個(gè)對(duì)象(實(shí)例)。這意味著您可以通過(guò)提供一個(gè)靜態(tài)成員來(lái)限制給定類(lèi)的對(duì)象的創(chuàng)建函數(shù)僅為該類(lèi)創(chuàng)建一個(gè)對(duì)象。一旦對(duì)象第一次創(chuàng)建,那么如果你將嘗試為同一個(gè)類(lèi)創(chuàng)建另一個(gè)對(duì)象,那么它將返回現(xiàn)有對(duì)象的引用(活對(duì)象的引用)給你。這樣,它可以限制到特定類(lèi)的一個(gè)對(duì)象。要僅限制類(lèi)的一個(gè)對(duì)象創(chuàng)建,您必須按照以下步驟。創(chuàng)建Singleton類(lèi)的步驟創(chuàng)建類(lèi)(可以使用C ++ / java / .Net編程語(yǔ)言創(chuàng)建類(lèi))使默認(rèn)構(gòu)造函數(shù)為PRivate,以便沒(méi)有人可以使用Operator new / calloc / malloc operator等創(chuàng)建任何對(duì)象。使用相同類(lèi)型的私有變量來(lái)跟蹤對(duì)象是否已經(jīng)被創(chuàng)建,只需檢查變量的空值,如果它不為null,那么只返回該對(duì)象的現(xiàn)有引用。如果對(duì)象沒(méi)有被創(chuàng)建,那么只使用普通的new操作符首次創(chuàng)建類(lèi)的一個(gè)對(duì)象,然后返回創(chuàng)建的對(duì)象的引用。定義一個(gè)靜態(tài)成員函數(shù),可以被其他類(lèi)訪問(wèn)以調(diào)用創(chuàng)建此類(lèi)的對(duì)象。

單例設(shè)計(jì)模式(Singleton Class)

看看例子,并閱讀代碼行的注釋更清楚。這是java代碼,你可以使用C ++和.net編程使用相同的過(guò)程。

123456789101112131415161718192021222324252627282930313233public class SingletonDemo{        //Make the constructor private, so no other call can create object of           //this class directly using new operator.        private SingletonDemo (){}  /*Create a private member variable of same class type(SingletonDemo Class here),    so that we can store the single object value in this variable    and maintain it throughout the application life time*/  private static SingletonDemo objSingletonDemo;     /*Create a static method to access from other classes which returns the existing objects reference. Check the null values of the object as below code, and if it is null then create the object for the first time only and return it. If it is not null, then just return the previous value.*/     public static SingletonDemo getInstance() {      if(null == objSingletonDemo)   {        objSingletonDemo = new SingletonDemo();      }      return objSingletonDemo;    }     public void testFun() {      // do something here       System.out.println("Hello SingletonDemo....");    }}

現(xiàn)在是時(shí)候測(cè)試上面的Singleton類(lèi)代碼。

1234567891011  // Now it is time to use the above singleton class    publicstaticvoidmain(Stringa[])    {      // Create an object of the SingletonDemo class by calling getInstance()      //static function of that class and use it's functionality.         SingletonDemoobjSingleTone1=SingletonDemo.getInstance();        objSingleTone1.testFun();     //Note: If you will call like below, then it will give error message.    // SingletonDemo objSingletonDemo = new SingletonDemo();  }

使用Singleton設(shè)計(jì)模式此設(shè)計(jì)模式通常用于以下應(yīng)用程序類(lèi)型。它保存網(wǎng)絡(luò)特定數(shù)據(jù),如果一個(gè)服務(wù)器將在特定時(shí)間停機(jī),那么它也可以同時(shí)管理您的請(qǐng)求與其他服務(wù)器。如果要將當(dāng)前數(shù)據(jù)或?qū)ο蟮母鹿蚕斫o所有其他模塊,則此單例設(shè)計(jì)模式是最好的方法。您還可以使用下面提到的單例模式開(kāi)發(fā)不同類(lèi)型的應(yīng)用程序。銀行應(yīng)用程序財(cái)務(wù)應(yīng)用旅游應(yīng)用系統(tǒng)服務(wù)類(lèi)

關(guān)于單例設(shè)計(jì)模式的面試問(wèn)題

我想分享我的實(shí)時(shí)面試經(jīng)驗(yàn),有99%的機(jī)會(huì),你會(huì)在你的電話采訪或面對(duì)面采訪中面對(duì)Singleton類(lèi)的問(wèn)題。所以準(zhǔn)備好答案。在Singleton模式或Singleton類(lèi)中找到一些常見(jiàn)問(wèn)題。1.如何創(chuàng)建一個(gè)Singleton類(lèi)。答:請(qǐng)檢查上面的代碼(SingletoneDemo類(lèi)),以供參考。2.如何限制應(yīng)用程序使用new運(yùn)算符創(chuàng)建該類(lèi)的對(duì)象。答案:通過(guò)將構(gòu)造函數(shù)聲明為private并提供一個(gè)靜態(tài)方法來(lái)創(chuàng)建該類(lèi)的新對(duì)象。請(qǐng)檢查上面的類(lèi)(SingletoneDemo類(lèi))以供參考。3.如何在整個(gè)應(yīng)用程序中只處理類(lèi)的一個(gè)實(shí)例。答案:通過(guò)使用Singleton類(lèi)。請(qǐng)檢查上面的類(lèi)(SingletoneDemo類(lèi))以供參考。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 正镶白旗| 宿松县| 英德市| 阳西县| 新干县| 枣强县| 芦山县| 治多县| 苍溪县| 新沂市| 灵丘县| 郁南县| 锦州市| 岚皋县| 玉环县| 巴青县| 怀柔区| 县级市| 准格尔旗| 昌乐县| 米易县| 延庆县| 玛纳斯县| 昌乐县| 高淳县| 武平县| 淮安市| 余干县| 团风县| 潞西市| 堆龙德庆县| 洛阳市| 鄂托克前旗| 遂宁市| 桃园市| 上饶县| 慈利县| 江油市| 黄冈市| 哈巴河县| 靖宇县|