1. 程式人生 > >大話設計模式 -- Golang實現

大話設計模式 -- Golang實現

DesignPattern

Use GO language to achieve 23 design patterns
該專案是拜讀《大話設計模式》後,學習Golang語言實現的,有很多不足之處,有待完善
有些模式是根據UML圖編寫的基本框架,有些是基於特定的環境下編寫的例項

建立型模式

結構型模式

  • Adapter介面卡模式:將一個類的介面轉換成客戶端希望的另一個介面。介面卡模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作
  • Bridge橋接模式:將抽象化(Abstraction)與實現化(Implementation)脫耦,使得二者可以獨立地變化;
  • Composite合成/組合模式:將物件組合成樹形結構,以表示“部分-整體”的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性
  • Decorator裝飾模式:動態地給一個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。
  • Facade 外觀模式為子系統中的一組介面提供一個一致的介面,此模式定義了一個高層介面,這個介面使得這一子系統更加容易使用
  • Proxy 代理模式:為其他物件提供一種代理,以控制對這個物件的訪問。

行為性模式

  • Chain Of Responsibility 職責鏈模式:使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個物件處理它為止
  • Command 命令模式:將一個請求封裝為一個物件,從而使你可用不同的請求對客戶進行引數化;對請求排隊或者記錄請求日誌,以及支援可撤銷的操作
  • Interpreter 直譯器模式:給定一個語言,定義它的文法的一種表示,並定義一個直譯器,這個直譯器使用該表示來解釋語言中的句子
  • Iterator 迭代器模式:提供一種方法順序訪問一個聚合物件中的各個元素,而又不暴露該物件的內部表示
  • Mediator 中介者模式:用一箇中介物件來封裝一系列的物件互動。中介這使各物件不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。
  • Memento 備忘錄模式:在不破壞封裝性的前提下,捕獲一個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可以將該物件恢復到原先儲存的狀態
  • Observer 觀察者模式:定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某一個主題物件。這個主題物件在狀態發生改變時,會通知所有觀察者物件,使它們能夠自動更新自己。
  • State 狀態模式:當一個物件的內在狀態改變時,允許改變其行為,這個物件看起來像是改變了其類
  • Strategy 策略模式:它定義了演算法家族,分別封裝起來,讓它們可以相互替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。
  • Template Methed模板方法:定義一個操作中的演算法的骨架,而將一些具體步驟延遲到子類中。模板方法使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。
  • Visitor 訪問者模式:表示一個作用於某物件結構中的各元素的操作,它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作

相關推薦

大話設計模式 -- Golang實現

DesignPattern Use GO language to achieve 23 design patterns 該專案是拜讀《大話設計模式》後,學習Golang語言實現的,有很多不足之處,有待完善 有些模式是根據UML圖編寫的基本框架,有些是基於特

大話設計模式C++實現-第17章-適配器模式

req span oid efi cpp endif 對象 adapt sdn 一、UML圖 關鍵詞:Client須要Request()函數,Adaptee提供的是SpecificRequest()函數,Adapter提供一個Request()函數將Ada

大話設計模式C++實現-第3.4.5-設計原則(1)

第三章-單一職責原則 (1).就一個類而言,應該僅有一個引起它變化的原因。 (2)如果一個類承擔的職責過多,就等於把這些職責耦合在了一起,一個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當發生變化時,設計會遭受到意想不到的破壞。 (3)軟體設計真正要做

大話設計模式java實現

自己用java實現了一下大話設計模式一書中的各個模式。github地址:https://github.com/ssystc/DesignPattern.gitCSDN下載地址:https://download.csdn.net/download/u014627099/1053

大話設計模式C++實現-第15章-抽象工廠模式

一、UML圖 二、概念 抽象方法模式(Abstract Factory):提供一個建立一系列相關或互相依賴物件的介面,而無需指定他們具體的類。 三、包含的角色 (1)抽象工廠 (2)具體工廠:包括具體工廠1和具體工廠2。具體工廠1用於生產具體產品A1和具體產品B1,具體

大話設計模式》c++實現 工廠模式

imap 倍增 pause 遠程服務器 只需要 記錄器 事件 pau 完成 工廠模式 工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。 在工廠模式中,我們在創建對象時不會對客戶

大話設計模式》c++實現 外觀模式

外觀模式:為子系統中的一組介面提供一個一致的介面,此模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。         外觀模式在什麼時候使用呢? 分為三個階段: (1)首先,在設計初期階段,應該要有意識的將不同的兩個層分離。 (2)第二,在開

大話設計模式》c++實現 建造者模式

建造者模式(Builder):將一個複雜物件的構建和它的表示分離,使得同樣的構建過程可以建立不同的表示。 角色: (1)Builder:是為建立一個Product物件的各個部件指定的抽象介面。 (2)ConcreteBuilder:是具體建立者,實現Builder介面,構造和裝配各個部件。 (3)

大話設計模式》Python版程式碼實現

一、簡單工廠模式 模式特點:工廠根據條件產生不同功能的類。 程式例項:四則運算計算器,根據使用者的輸入產生相應的運算類,用這個運算類處理具體的運算。 程式碼特點:C/C++中的switch...case...分支使用字典的方式代替。      使用異常機制

大話設計模式》c++實現 抽象工廠模式

  為了更清晰地理解工廠方法模式,需要先引入兩個概念: 產品等級結構 :產品等級結構即產品的繼承結構,如一個抽象類是電視機,其子類有海爾電視機、海信電視機、TCL電視機,則抽象電視機與具體品牌的電視機之間構成了一個產品等級結構,抽象電視機是父類,而具體品牌的電視機是其子類。

大話設計模式之觀察者模式總結-java實現

注:示例來自《大話設計模式》 現有如下需求 公司員工想要利用工作時間炒股票 老闆經常外出 怕被老闆看到 於是拜託前臺小姐姐 老闆回來的時候打個電話通知他們 初步程式碼實現如下 前臺祕書類 package Test14; import java.uti

大話設計模式之裝飾模式總結-java實現

注:示例來自《大話設計模式》 現有如下要求 寫一個可以給人搭配不同的服飾的系統 程式碼如下 Person類 package Test06; public class Person { private String name; pub

大話設計模式》java實現之簡單工廠模式

《大話模式》這本書寫得不錯,可惜不是java版,現在有空,想著用java實現一下,寫到哪算哪 UML圖 程式碼結構圖 public class Client { public static void main(String[] args)

大話設計模式之中介者模式總結-java實現

注:示例來自《大話設計模式》 儘管將一個系統分割成許多物件通常可以增加其可複用性 但是物件間相互連線的激增又會降低其可複用性 因為大量的連線使得一個物件不可能在沒有其他物件的支援下工作 系統表現為一個不可分割的整體 所以 對系統的行為進行任何較大的改動就十分困

大話設計模式之抽象工廠模式總結-java實現

注:示例來自《大話設計模式》 現有如下需求 寫一個基本的資料訪問程式 資料庫用SqlServer 簡單程式碼實現如下 使用者類 package Test15; public class User { private int id;

大話設計模式》java實現之狀態模式

狀態模式、策略模式、責任鏈模式三者非常像,今天花了很多時間查詢他們之間的不同,部落格https://www.cnblogs.com/xibei666/p/6858145.html總結得很好,這裡簡單總結一下。現在總結如下: UML圖狀態模式和策略模式基本一致

大話設計模式——》用java程式碼實現

設計模式之命令模式 概念:在軟體系統中,“行為請求者”與“行為實現者”通常呈現一種”緊耦合”。但在某些場合,比如要對行為進行“記錄、撤銷/重做、事務”等處理,這種無法抵禦變化的緊耦合是不合適的。在這種情況下,如何將”行為請求者”與”行為實現者”解耦?將一組

大話設計模式》讀書筆記之C++實現--chapter22橋接模式

橋接模式的核心在於理解好繼承屬於is-a的關係,當我們使用繼承的時候先要在心裡問自己一遍子類是不是一個父類,如果答案是否,那我們就要考慮如何重新定義父類實現更好的抽象,此時我們可以聯想到合成/聚合關係,

大話設計模式3 裝飾模式 的java程式碼實現

1,Person類(ConcreteComponent)package yx.designpattern.decorator; //Person類(ConcreteComponent) public class Person { private String name;

大話設計模式》讀書筆記之C++實現--chapter23命令模式

#include <iostream> #include <algorithm> #include <list> #include <vector> #include <QCoreApplication>