佳麗斯 加厚雙人/單人秋冬被子暖冬 羊毛被芯羊毛柔絲被特價(jià)包郵 憂憂魚冬外穿打底褲女秋冬厚長(zhǎng)褲女褲加絨加厚高腰彈力鉛筆褲靴褲 韓國(guó)代購2013新款 韓版秋冬休閑女時(shí)尚磨破口袋衛(wèi)衣韓版學(xué)生裝 潮

          有時(shí),退一步,能一口氣進(jìn)幾步,只是這先退一步需要勇氣和自信。

          用心愛你,努力工作。

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            70 隨筆 :: 1 文章 :: 33 評(píng)論 :: 0 Trackbacks

          單例模式 有以下的特點(diǎn):

          1. 單例類只能有一個(gè)實(shí)例。
          2. 單例類必須自己創(chuàng)建自己的唯一的實(shí)例。
          3. 單例類必須給所有其他對(duì)象提供這一實(shí)例。

          代碼:

          Singleton.php :

          <?php
          class Singleton
          {
              private static $instance;

              private function __construct()
              {
              }

              public static function getInstance()
              {
                  if(self::$instance == null)
                  {
                      self::$instance = new Singleton();
                  }

                  return self::$instance;
              }
          }
          ?>

          在使用的時(shí)候,因?yàn)闃?gòu)造方法是private(私有)的,所以是不能直接實(shí)例化的,必須使用類似下面的方法:

          例子:

          <?php
          require_once('Singleton.php ');

          $instance = Singleton::getInstance();
          ?>

          ============================================

          其它關(guān)于靜態(tài)的說明

          靜態(tài)成員.
          他在類被聲明時(shí)就產(chǎn)生了,也就是在程序編譯階段產(chǎn)生的,它只有一個(gè)所有該類實(shí)例共享的原本,任何該類實(shí)例更改靜態(tài)變量的值后,其它該類實(shí)例再去訪問該靜態(tài)變量,其值已經(jīng)變成更改后的值,因?yàn)槠湓趦?nèi)存,就存一個(gè)原本。
          非靜態(tài)成員是在類實(shí)例化時(shí)產(chǎn)生的,你new一個(gè)該類實(shí)例,系統(tǒng)就會(huì)為該類實(shí)例的所有非靜態(tài)成員新開辟一個(gè)空間,每個(gè)實(shí)例都只能自己的非靜態(tài)成員。(有多少個(gè)類的實(shí)例,就要開辟多少個(gè)非靜態(tài)成員的空間)

          單例類全局只有一個(gè)實(shí)例,你可以把它看成全局對(duì)象。

          從底層來說,編譯完成后主要是兩個(gè)部分,一是CPU指令,這一部分包含各種方法;二是數(shù)據(jù),也就是程序定義的各種類型的變量。運(yùn)行程序?qū)嵗粋€(gè)對(duì)象時(shí),按如下方式分配內(nèi)存:
          1。在程序啟動(dòng)時(shí)將靜態(tài)數(shù)據(jù)和靜態(tài)方法放入堆內(nèi)存中。
          2。第一次實(shí)例化對(duì)象時(shí)將其它方法放入代碼段中。
          3。每次實(shí)例化對(duì)象時(shí)將其它數(shù)據(jù)放入棧內(nèi)存中。
          實(shí)例化同一個(gè)對(duì)象時(shí),上述1、2項(xiàng)不動(dòng),只是再加一個(gè)第3項(xiàng)即可。銷毀一個(gè)實(shí)例的時(shí)候,如果還有其它的實(shí)例存在,就只釋放該實(shí)例的棧數(shù)據(jù)段(上述第3項(xiàng))。

          根據(jù)以上原理回答您的問題
          靜態(tài)方法和數(shù)據(jù)一般都是Public型的,用于類的極普遍的事物處理,可以在程序的任意地方調(diào)用,在整過程序運(yùn)行過程中始終占用計(jì)算機(jī)內(nèi)存,一搬少用。如果一個(gè)程序中的各個(gè)對(duì)象都用一個(gè)數(shù)據(jù)庫的話,可以使用靜態(tài)方法連接。

          單件模式的實(shí)例銷毀時(shí)可以釋放所有的非靜態(tài)方法和數(shù)據(jù),,如果把這個(gè)類的所有方法都設(shè)計(jì)為靜態(tài)的,這些方法將一直占用內(nèi)存,浪費(fèi)資源,不可取。

          在new一個(gè)對(duì)象時(shí),只是加一個(gè)數(shù)據(jù)段,并不重新加載方法和靜態(tài)變量。

          最后說一個(gè)變量傳送的問題,網(wǎng)上很多朋友在回答類之間參數(shù)傳遞時(shí)都說用靜態(tài)變量,我認(rèn)為這種方法不好,本來加類的目的就是為了封裝,如果用一個(gè)類似于全局變量的靜態(tài)變量作為參數(shù)就大大削弱了封裝的意義。

          實(shí)際上,系統(tǒng)和應(yīng)用程序?qū)?nèi)存的管理相當(dāng)復(fù)雜.
          =======================下面摘自思?xì)w的文字

          從表面上看,靜態(tài)(static)成員可以通過 類名.成員名 來直接調(diào)用,而實(shí)例(instance)成員需要生成一個(gè)對(duì)象后才能調(diào)用。同一個(gè)操作,性能當(dāng)然靜態(tài)成員好

          但其實(shí)區(qū)別是跟對(duì)象設(shè)計(jì)有關(guān)的,一般來說實(shí)例成員跟實(shí)例的狀態(tài)有關(guān),某個(gè)方法的調(diào)用可能需要訪問當(dāng)前對(duì)象的狀態(tài),并改變其狀態(tài),從而影響其他方法的結(jié)果

          而靜態(tài)成員是跟類本身有關(guān),與單獨(dú)的實(shí)例狀態(tài)無關(guān)。但靜態(tài)成員不要太多了,否則就淪為以前的procedural programming風(fēng)格了,也許對(duì)象需要重新設(shè)計(jì)或重構(gòu)。

          靜態(tài)成員往往會(huì)在多線程下操作,需要做同步化控制

          posted on 2008-11-15 17:52 王生生 閱讀(537) 評(píng)論(0)  編輯  收藏 所屬分類: PHP
          森露2013新款豹紋打底衫 高領(lǐng) 女 長(zhǎng)袖 修身長(zhǎng)袖t恤女 加絨加厚冬 2013春秋新款女裝 潮修身大碼長(zhǎng)袖小西裝外套女 韓版中長(zhǎng)款小西裝 憂憂魚2013秋冬新款直筒褲女顯瘦長(zhǎng)褲加絨黑色休閑褲修身西褲女褲
          主站蜘蛛池模板: 静安区| 东平县| 青龙| 双柏县| 普陀区| 黄石市| 日喀则市| 大同市| 丰县| 永新县| 龙海市| 衡阳县| 孙吴县| 二手房| 璧山县| 凤台县| 玛纳斯县| 青海省| 永泰县| 五大连池市| 连平县| 隆尧县| 怀宁县| 淅川县| 延安市| 灵石县| 乐陵市| 浦北县| 阿克苏市| 平度市| 邹城市| 定安县| 富顺县| 迭部县| 廊坊市| 临泽县| 阿合奇县| 大荔县| 扶绥县| 三门县| 灵寿县|