資源描述:
《幾種常用的設計模式介紹》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。
1、幾種常用的設計模式介紹盡管亞力山大的著作是針對建筑領域的,但他的觀點實際上適用于所有的工程設計領域,其中也包括軟件設計領域?!败浖O計模式”,這個術語是在1990年代由ErichGamma等人從建筑設計領域引入到計算機科學中來的。目前主要有23種。TAG:設計模式目錄(?)[-]1設計模式的起源軟件設計模式的分類1創(chuàng)建型1結構型1行為型常見設計模式介紹1單例模式(singleton)1簡單工廠(StaticFactoryMethod)1工廠方法(FactoryMethod)和抽象工廠(AbstractFactory)1代
2、理模式(Proxy)1命令模式(Command)1策略模式(Strategy)1門面模式(Facade)1橋接模式(Bridge)1觀察者模式(Observer)1.設計模式的起源最早提出“設計模式”概念的是建筑設計大師亞力山大Alexander。在1970年他的《建筑的永恒之道》里描述了投計模式的發(fā)現(xiàn),因為它已經(jīng)存在了千百年之久,而現(xiàn)代才被通過大量的研究而被發(fā)現(xiàn)。在《建筑的永恒之道》里這樣描述:模式是一條由三個部分組成的通用規(guī)則:它表示了一個特定環(huán)境、一類問題和一個解決方案之間的關系。每一個模式描述了一個不斷重復發(fā)生的
3、問題,以及該問題解決方案的核心設計。在他的另一本書《建筑模式語言》中提到了現(xiàn)在已經(jīng)定義了253種模式。比如:說明城市主要的結構:亞文化區(qū)的鑲嵌、分散的工作點、城市的魅力、地方交通區(qū)住宅團組:戶型混合、公共性的程度、住宅團組、聯(lián)排式住宅、丘狀住宅、老人天地室內環(huán)境和室外環(huán)境、陰和陽總是一氣呵成針對住宅:夫妻的領域、兒童的領域、朝東的臥室、農(nóng)家的廚房、私家的沿街露臺、個人居室、起居空間的序列、多床臥室、浴室、大儲藏室針對辦公室、車間和公共建筑物:靈活辦公空間、共同進餐、共同小組、賓至如歸、等候場所、小會議室、半私密辦公室盡管
4、亞力山大的著作是針對建筑領域的,但他的觀點實際上適用于所有的工程設計領域,其中也包括軟件設計領域?!败浖O計模式”,這個術語是在1990年代由ErichGamma等人從建筑設計領域引入到計算機科學中來的。目前主要有23種。2.軟件設計模式的分類2.1.創(chuàng)建型創(chuàng)建對象時,不再由我們直接實例化對象;而是根據(jù)特定場景,由程序來確定創(chuàng)建對象的方式,從而保證更大的性能、更好的架構優(yōu)勢。創(chuàng)建型模式主要有簡單工廠模式(并不是23種設計模式之一)、工廠方法、抽象工廠模式、單例模式、生成器模式和原型模式。2.2.結構型用于幫助將多個對象組
5、織成更大的結構。結構型模式主要有適配器模式、橋接模式、組合器模式、裝飾器模式、門面模式、亨元模式和代理模式。2.3.行為型用于幫助系統(tǒng)間各對象的通信,以及如何控制復雜系統(tǒng)中流程。行為型模式主要有命令模式、解釋器模式、迭代器模式、中介者模式、備忘錄模式、觀察者模式、狀態(tài)模式、策略模式、模板模式和訪問者模式。3.常見設計模式介紹3.1.單例模式(singleton)有些時候,允許自由創(chuàng)建某個類的實例沒有意義,還可能造成系統(tǒng)性能下降。如果一個類始終只能創(chuàng)建一個實例,則這個類被稱為單例類,這種模式就被稱為單例模式。publicc
6、lassSingleton{publicstaticvoidmain(String[]args){//創(chuàng)建Singleton對象不能通過構造器,只能通過getInstance方法Singletons1=Singleton.getInstance();Singletons2=Singleton.getInstance();//將輸出trueSystem.out.println(s1==s2);}//使用一個變量來緩存曾經(jīng)創(chuàng)建的實例privatestaticSingletoninstance;//將構造器使用private修
7、飾,隱藏該構造器privateSingleton(){System.out.println("Singleton被構造!");}//提供一個靜態(tài)方法,用于返回Singleton實例//該方法可以加入自定義的控制,保證只產(chǎn)生一個Singleton對象publicstaticSingletongetInstance(){//如果instance為null,表明還不曾創(chuàng)建Singleton對象//如果instance不為null,則表明已經(jīng)創(chuàng)建了Singleton對象,將不會執(zhí)行該方法if(instance==null){//
8、創(chuàng)建一個Singleton對象,并將其緩存起來instance=newSingleton();}returninstance;}}單例模式主要有如下兩個優(yōu)勢:1)減少創(chuàng)建Java實例所帶來的系統(tǒng)開銷2)便于系統(tǒng)跟蹤單個Java實例的生命周期、實例狀態(tài)等。3.2.簡單工廠(StaticFactoryMethod)簡單工