亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

爪哇語言單態創立性模式介紹(上)

2019-11-18 12:16:33
字體:
來源:轉載
供稿:網友

  什么是模式
  一個圍棋下得好的人知道,好的"形"對于圍棋非常重要。形是棋子在棋盤上的幾何外形的抽象化。 形就是模式(Pattern),也是人腦把握和熟悉外界的要害。而人腦對處理模式的能力也非常高超, 人可以在幾百張面孔中一下子辨認出所熟悉的臉來,就是一個例子。
  簡而言之,在我們處理大量問題時,在很多不同的問題中重復出現的一種性質,它使得我們可以使用一種方法來描述問題實質并用本質上相同,但細節永不會重復的方法去解決,這種性質就叫模式。模式化過程是把問 題抽象化,在忽略掉不重要的細節后,發現問題的一般性本值,并找到普遍使用的方法去解決的過程。
  發現模式是與研究模式同時發生的,發現一個新的模式很不輕易。一個好的模式必須滿足以下幾點:
  1、它可以解決問題。模式不能僅僅反映問題,而必須對問題提出解決方案。
  2、它所提出解決方案是正確的,而且不是很明顯的。
  3、它必須是涉及軟件系統深層的結構的東西,不能僅是對已有的模塊的描述。
  4、它必須滿足人的審美,簡潔美觀。
  換言之,一個美妙的東西不一定就是模式,但是一個模式必須是一個美妙的東西。
  軟件工程學的各個方面,諸如開發組織,軟件處理,項目配置治理,等等,都可以看到模式的影子。但至今 得到了最好的研究的是設計模式和組織模式。在軟件編程中使用模式化方法, 是在編程對象化之后才開始得到重視的。軟件編程中模式化方法的研究,也是在九十年代才開始。
  在面向對象的編程中使用模式化方法研究的開創性著作,是
  Design Patterns - Elements of Reusable Object-Oriented Software, E.Gamma, R. Helm, R. Johnson, and J. Vlissides,1995, Addison-Wesley.
  這四位作者通常被稱為四人幫(Gang of Four, 或GoF)。(在這個詞出現以后,很多西方商業炒作利用這個 路人皆知的詞賺錢,有一個八十年代的美國四人樂隊以此為隊名。在英國政界更曾有好幾個小幫派被稱為四人幫。 在這里大家使用這個詞稱呼這四個聞名作者,帶有戲虐成分。)
  由于爪哇語言的特點,使得模式在爪哇語言的實現有自己的特點。 爪哇語言是現今最普及的純粹OOP的編程語言,使用爪哇語言編程的程序師平均的素質也相對比較高。 這些程序師往往不滿足于只是實現程序功能要求,他們經常想要在代碼結構,編程風格,乃至解決問題的 思考方式上不斷進取和自我完善。模式,就是在大量的實踐中總結和理論化之后的優選的代碼結構,編程風格, 及解決問題的思考方式。對模式的了解和把握,是爪哇程序師提高自身素質的一個很好的方向。
  作者在學習和工作中把自己的體會 總結下來,藉以與讀者交流提高。
  作者在后面會使用簡單的UML(統一建模語言,Unified Modelling Languge)。由于市場上有很多介紹UML 的書,而作者在后面使用到的UML又極為簡單,因此只在此作一極為簡單的介紹,目的是讓沒有接觸過UML的 讀者能看懂后面的講述。
   爪哇語言單態創立性模式介紹(上)(圖一)
  圖1. UML的類圖舉例 
  在圖1的類圖中可以看出,表示類的框分成四層:類名,變量清單,函數清單和屬性清單。 變量名如是正體字,表明類是實的(Concrete,即可以實例化的類),變量名如是斜體字,表明類是抽象的。 顯然,我們在圖中給出了一個實的類。
  在圖1的類ClassUML中,一個變量或函數(方法)左面假如有一個加(+)號,表示它是公開的, 左面假如有一個減(-)號,表示它是私有的,左面假如有一個井(#)號,表示它是保護的。
  一個屬性即由一個內部變量,一個賦值函數(mutator)和一個取值函數(accessor)組成的結構。
  在類的方框的右上角里,通常還分兩行寫出類的父類和所實現的接口。在后面讀者會看到例子。
  在類與類之間,會有線條指明它們之間的關系。在類與類之間可以發生推廣(與繼續相反),依靠,累積和關聯 等關系。在后面讀者看到例子時作者會加以解釋。
  package com.javapatterns.singleton.demos;
  public class ClassUML {
   public ClassUML() {}
   PRivate void aPrivateFunction() {}
  public void aPublicMethod() {}
   public int getAProperty(){ return aPrivateVar; }
   public void setAProperty(int aPrivateVar)
  { this.aPrivateVar = aPrivateVar;  }
   static public void aStaticMethod() {}
   protected void aProtectedMethod() {}
   private int aPrivateVar;
   public int aPublicVar;
   protected int aProtectedVar;
  }
  代碼清單1. ClassUML類的源代碼。
  什么是創立性模式
  創立性模式(Creational Patterns)是類在實例化時使用的模式。當一些系統在創立對象時,需要動態地決定 怎樣創立對象,創立哪些對象。創立性模式告訴我們怎樣構造和包裝這些動態的決定。創立性模式通常包括 以下的模式
  1、工廠函數模式
  2、抽象工廠類模式
  3、建設者模式
  4、原始模型模式
  5、單態模式
  單態模式
  一個單態類只可有一個實例。這樣的類常用來進行資源治理。
  需要治理的資源包括軟件外部資源,譬如,每臺 計算機可以有若干個打印機,但只能有一個打印處理器軟件。每臺計算機可以有若干傳真卡,但是 只應該有一個傳真軟件治理傳真。每臺計算機可以有若干通訊端口,你的軟件應當集中治理這些 通訊端口,以避免同時一個通訊端口被兩個請求同時調用。
  需要治理的資源包括軟件內部資源,譬如,大多數的軟件都有一個(甚至多個)屬性(properties)文件 存放系統配置。這樣的系統應當有一個對象來治理一個屬性文件。很多軟件都有數據庫,一般而言, 整個軟件應當使用一個聯接通道,而不是任意在需要時就新打開一個聯接通道。
  需要治理的軟件內部資源也包括譬如負責紀錄網站來訪人數的部件,記錄軟件系統內部事件、出錯 信息的部件,或是進行系統表現監查的的部件,等等。這些部件都必須集中治理,不可政出多頭。
  單態類的特性
  綜合而言,
  1、單態類只可有一個實例。
  2、它必須自己創立自己這唯一的一個實例。
  3、它必須給所有其它的類提供自己這一實例。
  最后,單態類在理論和實踐上都并非限定只能有"一個"實例,而是很輕易推廣到任意有限個實例的情況。
  單態模式的幾種實現
  由于爪哇語言的特點,使得單態模式在爪哇語言的實現有自己的特點。這些特點主要表現在怎樣實例化上。
  餓漢式單態類
  餓漢式單態類是在爪哇語言里實現得最為簡便的單態類。
   爪哇語言單態創立性模式介紹(上)(圖二)
  圖2.餓漢式單態類的UML類圖 
  圖中的關系線表明,此類自已將自己實例化。
  package com.javapatterns.singleton.demos;
  public class EagerSingleton {
  private EagerSingleton() { }
  public static EagerSingleton getInstance() {
  return m_instance;
  }
  private static final EagerSingleton m_instance = new EagerSingleton();
  }
  代碼清單2.餓漢式單態類。
  值得指出的是,由于構造子是私有的,因此此類不能被繼續。
  懶漢式單態類
  懶漢式單態類在第一次被引用時將自己實例化。假如加載器是靜態的,那么在懶漢式單態類被加載時不 會將自己實例化。
  package com.javapatterns.singleton.demos;
  public class LazySingleton {
  private LazySingleton() { }
  
  public static LazySingleton getInstance()
  {
   if (m_instance == null)
   {
  file://More than one threads might be here!!!
  synchronized(LazySingleton.class)
  {
   if (m_instance == null)
   {
    m_instance = new LazySingleton();
   }
  }
   }
   return m_instance;
  }
  private static LazySingleton m_instance = null;
  }               代碼清單3.懶漢式單態類。
  爪哇語言單態創立性模式介紹(上)(圖三)
  圖3.懶漢式單態類
  圖中的關系線表明,此類自已將自己實例化。
  讀者可能會注重到,在上面給出 懶漢式單態類實現里,使用了在多線程編程中常要使用的,聞名的雙重檢查原則。對雙重檢查原則 和多線程編程要點不十分熟悉的讀者,可以看看后面給出的問答題。
  同樣,由于構造子是私有的,因此此類不能被繼續。
  餓漢式單態類在自己被加載時就將自己實例化。既便加載器是靜態的,在餓漢式單態類被加載時仍 會將自己實例化。單從資源利用效率角度來講,這是比懶漢式單態類稍差些。從速度和反應時間角度來 講,則比懶漢式單態類稍好些。然而,懶漢式單態類在實例化時必須處理好在多個線程同時首次引 用此類時,實例化函數內部要害段的訪問限制問題。非凡是當單態類作為資源控器,在實例化時必然涉及 資源初始化,而資源初始化很有可能耗費時間。這意味著出現多線程同時首次引 用此類的幾率變得較大。
  餓漢式單態類可以在爪哇語言內實現,但不易在C++內實現,因為靜態初始化在C++里沒有固定的順序, 因而靜態的m_instance變量的初始化與類的加載順序沒有保證,可能會出問題。這就是為什么GoF在提出 單態類的概念時,舉的例子是懶漢式的。他們的書影響之大,以致爪哇語言中單態類的例子也大多是 懶漢式的。實際上,作者認為餓漢式單態類更符合爪哇語言本身的特點。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品夜间视频香蕉| 国产精品欧美久久久| 日韩网站免费观看| 午夜精品一区二区三区在线视| 日韩视频亚洲视频| 欧美专区国产专区| 日韩一区二区福利| www.久久久久久.com| 日本久久久久久久久久久| 中文字幕亚洲综合久久筱田步美| 一本一本久久a久久精品综合小说| 91精品啪aⅴ在线观看国产| 国内精品模特av私拍在线观看| 欧美激情一区二区三区久久久| 98午夜经典影视| 这里只有精品视频在线| 精品免费在线观看| 欧美黑人巨大xxx极品| 国内精品一区二区三区| 日韩一区av在线| 久久福利视频网| 57pao国产精品一区| 国产裸体写真av一区二区| 国产一区二区三区在线看| 日韩欧美国产成人| 最近2019好看的中文字幕免费| 亚洲美女精品久久| 少妇高潮久久久久久潘金莲| 久久久亚洲福利精品午夜| 欧美日韩亚洲系列| 韩国19禁主播vip福利视频| 国模精品一区二区三区色天香| 91人人爽人人爽人人精88v| 久青草国产97香蕉在线视频| 欧洲日本亚洲国产区| 亚洲精品日韩欧美| 最近2019免费中文字幕视频三| 日韩精品视频在线| 欧美综合在线观看| 综合欧美国产视频二区| 国产精品96久久久久久又黄又硬| 国产偷国产偷亚洲清高网站| 中文字幕精品久久久久| 最近日韩中文字幕中文| 国产精品国产三级国产aⅴ浪潮| 日本久久久久亚洲中字幕| 国产不卡一区二区在线播放| 午夜精品一区二区三区av| 福利精品视频在线| 国产精品观看在线亚洲人成网| 久久伊人免费视频| 国产999在线| 欧美精品久久一区二区| 久久国产精品网站| 91香蕉亚洲精品| 国产精品免费久久久久久| 精品二区三区线观看| 色午夜这里只有精品| 日韩中文字幕免费| 欧美激情精品久久久久久久变态| 亚洲老头老太hd| 久久理论片午夜琪琪电影网| 国产精品视频26uuu| 久久中文精品视频| 国产精品最新在线观看| 久久精品中文字幕| 日韩大胆人体377p| 狠狠色狠色综合曰曰| 色偷偷偷综合中文字幕;dd| 国产在线视频2019最新视频| 亚洲激情视频网| 欧美另类老女人| 中文字幕日韩视频| 欧美国产日韩一区二区在线观看| 在线精品国产成人综合| 色噜噜亚洲精品中文字幕| 亚洲国产精品电影在线观看| 亚洲欧美日韩网| 亚洲高清av在线| 国产精品激情av电影在线观看| 中文字幕成人精品久久不卡| xvideos亚洲| 精品久久久久久电影| 亚洲一区二区免费| 久久久精品2019中文字幕神马| 欧美性极品少妇精品网站| 亚洲第一黄色网| 亚洲国产精品久久久久| 欧美性xxxx极品hd满灌| 亚洲综合国产精品| 秋霞成人午夜鲁丝一区二区三区| 日本午夜精品理论片a级appf发布| 国产精品久久久久久久久粉嫩av| 久久精品亚洲一区| 97精品久久久中文字幕免费| 国内精品一区二区三区四区| 红桃视频成人在线观看| 亚洲2020天天堂在线观看| 美日韩丰满少妇在线观看| 亚洲自拍偷拍色图| 国产日韩欧美一二三区| 国产精品精品久久久| 第一福利永久视频精品| 久久久精品影院| 91久久精品一区| 九九久久国产精品| 国产精品观看在线亚洲人成网| 国产主播在线一区| 亚洲bt欧美bt日本bt| 色偷偷av一区二区三区乱| 狠狠色狠色综合曰曰| 国产精品欧美日韩一区二区| 国产精品∨欧美精品v日韩精品| 亚洲精品美女在线观看| 中文字幕日韩精品有码视频| 精品久久久一区二区| 国产大片精品免费永久看nba| 亚洲最大福利网站| 国产一区二区丝袜高跟鞋图片| 免费91在线视频| 91精品久久久久久久久中文字幕| 成人免费福利视频| 2019中文字幕全在线观看| www欧美日韩| 国产成人精品久久二区二区91| 亚洲欧洲一区二区三区在线观看| 欧美片一区二区三区| 成人免费淫片视频软件| 精品视频一区在线视频| 亚洲乱码av中文一区二区| 亚洲精品一区在线观看香蕉| 91高清在线免费观看| 久久久久久国产精品美女| 日本精品视频在线| 日韩av观看网址| 久久久久国产精品一区| 欧美成人在线影院| 久久久精品电影| 欧美野外wwwxxx| 久久夜色精品国产欧美乱| 91精品免费视频| 日韩av不卡电影| 国产69精品久久久| 亚洲成人av在线播放| 亚洲欧美日韩爽爽影院| 国产精品久久久久91| 亚洲精品日韩久久久| 美女国内精品自产拍在线播放| 亚洲欧洲国产一区| 欧美一区亚洲一区| 久久视频精品在线| 亚洲国产女人aaa毛片在线| 51色欧美片视频在线观看| 亚洲欧美在线看| 欧美日韩免费区域视频在线观看| 尤物精品国产第一福利三区| 国产精品日韩久久久久| 日韩毛片在线观看| 亚洲精品99久久久久中文字幕| 91高清视频在线免费观看| 亚洲人成网站999久久久综合| 91香蕉嫩草神马影院在线观看| 亚洲国产精品悠悠久久琪琪| 欧美成人午夜剧场免费观看|