壹、創作模式:
1,工廠方法模式工廠方法模式是因為工廠方法模式有問題而創建的。在工廠方法模式中,中間類的創建依賴於工廠類。如果要擴展程序,就必須修改工廠類,這違背了開放封閉原則,於是工廠方法模式出現了,只需要創建壹個工廠接口和多個工廠實現類。
2.抽象工廠抽象工廠提供了壹個接口,用於創建壹系列相關或相互依賴的對象,而無需指定它們的特定類。與工廠方法模式不同,工廠方法模式是創建壹個工廠,可以實現多種對象;抽象工廠提供了壹個抽象工廠接口,定義了多種工廠,每個工廠可以產生多種對象。
3.singleton模式singleton模式可以保證壹個類只有壹個實例,並提供壹個全局訪問點來訪問它。同時,它在類內部創建單個對象,通過設置權限,就不可能在類外部創建對象。單例對象可以保證JVM中只存在壹個對象實例。
4.構建器模式(Builder mode)構建器模式是將壹個復雜的構造從它的表示中分離出來,這樣同壹個構造過程就可以產生不同的表示。在程序中,通過builder將壹些不會改變的基本組件組合起來,構建復雜的對象,實現分離。
5.原型模式:原型模式指定要用原型實例創建的對象類型,並通過復制這些原型來創建新對象。事實上,對象的副本被復制並返回給調用者。對象需要繼承Cloneable並重寫clone方法。原型模式的思想是以壹個對象為原型,復制克隆,產生壹個與原對象相似的新對象。
二、結構模型:
1,適配器模式適配器模式是使那些因為接口不兼容而不能協同工作的類能夠協同工作的功能,將兩個不兼容且獨立的接口連接起來,使它們能夠協同工作,適配器起到了中介的作用。
2.裝飾者模式(decorator pattern):裝飾者模式動態地給壹個對象增加壹些額外的職責,給壹個對象增加壹些新的功能,要求被裝飾對象和被裝飾對象實現同壹個接口,被裝飾對象持有被裝飾對象的壹個實例。除了動態添加,還可以動態撤銷。要動態,不能靠繼承來實現,因為繼承是靜態的。
3.代理模式代理模式是為其他對象提供壹個代理來控制對這個對象的訪問,即創建壹個類的代理類,並在間接訪問代理類的過程中控制其功能。
4.外觀模式外觀模式為子系統中的壹組接口提供壹致的接口。外觀模式定義了壹個高級接口,使得這個子系統更容易使用。
5.橋接模式橋接模式是把抽象部分和實現部分分開,這樣兩者都可以獨立變化。橋接模式是將事物從其具體實現中分離出來,使其能夠獨立變化(突然與mvc模式相關聯)。
6.組合模式(Combination mode):組合模式是將對象組合成樹形結構來表示“部分-整體”的層次結構。組合模式使用戶能夠壹致地使用單個對象和組合對象。
7.享受元模式:享受元模式是利用* * *享受技術,有效支持大量細粒度對象。元共享模式的主要目的是實現對象的* * *共享,即* * *共享池。當系統中有很多對象時,可以減少內存的開銷,並且可以重用已有的相似對象。如果沒有找到匹配的對象,可以創建新的對象,這樣可以減少對象的創建,減少系統內存,提高效率。
第三,行為模式:
1,策略模式:
策略模式是定義壹系列算法,逐壹封裝,使之可以互換,算法的改變不會影響到使用算法的客戶。
2.模板方法模式:
模板方法模式是在壹個操作中定義算法的骨架,同時將壹些步驟延遲到子類。這個模式就是在壹個抽象類中,有壹個main方法,然後1...定義了n個方法,可以是抽象的,也可以是實際的方法。定義壹個類,繼承抽象類,重寫抽象方法,通過調用抽象類來調用子類。
模板方法使子類能夠在不改變算法結構的情況下,重新定義算法的壹些具體步驟,並將壹些固定的步驟和固定的邏輯方法封裝到模板方法中。調用模板方法來完成這些特定的步驟。
3.觀察者模式:
觀察者模式是已定義對象之間的壹對多依賴關系。當壹個對象的狀態改變時,所有依賴於它的對象都會得到通知並自動更新。
也就是說,當被觀察人的狀態發生變化時,所有的觀察者都會得到通知。這種依賴是雙向的。用戶在瀏覽壹些博客時,經常會在郵件訂閱和QQ郵箱的RSS訂閱中看到RSS圖標。簡單來說,當他們訂閱了這篇文章後,如果有任何後續更新,他們會及時通知用戶。這種現象是典型的觀察者模型。
4.叠代器模式:
叠代器模式提供了壹種順序訪問集合對象中元素的方法,而不需要暴露對象的內部表示。
在Java中,遍歷聚合類中每個元素的行為被分離出來,封裝到壹個叠代器中,叠代器處理遍歷任務;簡化聚合類,而不暴露聚合類的內部。在我們經常使用的JDK中,所有的類也是這些基本的東西。
5.責任鏈模式:
責任鏈模式是為了避免請求的發送方和接收方的耦合,這樣多個對象可能會接收到請求,將這些對象連接成壹個鏈,並沿著這個鏈傳遞請求,直到壹個對象處理它。有多個對象,每個對象持有對下壹個對象的引用,這樣就形成了壹個鏈,請求沿著這個鏈傳遞,直到壹個對象決定處理請求。
6、命令模式:
命令模式是將壹個請求封裝成壹個對象,這樣發送方就可以用不同的請求參數化客戶。模式中有三個對象:調用者、接收者和命令,實現了請求和執行的分離;調用者選擇要發布的命令,命令指定接收者。
7.紀念品圖案:
Memento模式在不破壞封裝的情況下捕獲對象的內部狀態,並將該狀態保存在對象外部。創建壹個memo類來存儲原類的信息;同時,創建memo warehouse類來存儲memo類。主要目的是保存某個對象的某個狀態,以便在適當的時候恢復該對象,即進行備份。
8.狀態模式:
狀態模式允許對象在其內部狀態改變時改變其行為。壹個對象有多種狀態,每種狀態都有特定的行為。
9.訪問者模式:
訪問者模式主要是將數據結構和數據操作分開。在被訪問的類中增加壹個接口來接收訪問者,封裝了壹些亂七八糟的操作,被訪問結構的解耦結構和算法,具有優秀的擴展性。壹般來說,它是壹種分離對象數據的結構和行為的方法。
10,中介模式:
中介模式是用壹個中介對象封裝壹系列對象交互。Mediator使對象不必顯式地相互引用,從而使它們的耦合變得松散,並獨立地改變它們的交互。
11,解釋器模式:
解釋器模式就是給出壹種語言,定義它的語法表示,定義壹個解釋器。這個解釋器用這個標誌來解釋語言中的句子,基本都用在這個範圍,應用面比較窄,比如正則表達式的解釋。
擴展數據:
軟件設計的概念和意義;
軟件設計模式是軟件設計經驗的總結,是對軟件設計中反復出現的設計問題的成功解決方案的描述。為了記錄這些成功的設計經驗,方便以後使用,軟件設計模式通常包含四個基本元素:模式名、問題、解決方案和效果。
模式名其實是壹個幫助記憶的名字,是軟件設計中使用的壹個技術術語,有助於設計師之間的交流。
問題描述了設計者面臨的設計場景,用來告訴設計者什麽時候使用模式。
解決方案描述了設計的細節,通常會給出解決方案的原理圖(如UML類圖、序列圖等。,或壹些示意圖)和相關的文本描述,如果可能的話,還會給出壹些代碼示例,以便更深入地理解解決方案。
效果描述了設計方案的優缺點。這些影響通常面向軟件的質量屬性,比如可伸縮性和可重用性。
軟件設計模式的意義在於設計重用。設計模式可以讓設計者更容易借鑒或直接使用已經被證明成功的設計方案,而不需要花費時間進行重復設計。有些設計模式甚至提供展示類圖設計和代碼示例,為設計文檔和軟件開發提供直接支持。