架構之美——語言與架構(三)
現在大家常說的經典究竟是什麼?有人說:經久不衰的萬世之作,後人尊敬它稱之為經典。也有人說:經典是指具有典範性、權威性的著作。還有人說:經典就是經過歷史選擇出來的「最有價值的書」。今天我閱讀的是《架構之美》的最後一章,其題目為重讀經典。似乎在所有的科學領域中,都有一些著作和人名是不能不提的。
在軟體工程方面,勳章可能要頒給《設計模式:可復用物件導向軟體的基礎》。人們可以把設計模式的普及歸功於《設計模式》一書,它不僅可以看作是設計模式運動的起始點,也可以看作是返回點;與設計模式相關多,但關於這個主題的大多數討論都是圍繞這本書中列出的設計模式。我們並不是排除其他模式,但這本書中提到的23個模式肯定可以稱之為經典。
那麼現在就簡單介紹一下,《設計模式》一書中將23個模式分為三類,建立型模式、結構型模式、行為型模式。其中,建立型模式包括工廠方法模式、抽象工廠模式、建造者模式、原型模式、單例模式;結構型模式包括介面卡模式、橋接模式、組合模式、裝飾模式、外觀模式、享元模式、**模式;行為型模式包括職責鏈模式、命令模式、直譯器模式、迭代器模式、中介者模式、備忘錄模式、觀察者模式、狀態模式、策略模式、模板方法模式、訪問者模式。
1. factory method(工廠方法) :定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method 使一個類的例項化延遲到其子類。
3. builder(建造者) :將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。
4. prototype(原型):用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。
5. singleton(單例) :保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。
6. adapter class/object(介面卡):將乙個類的介面轉換成客戶希望的另外乙個介面。adapter 模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。
7. bridge(橋接) :將抽象部分與它的實現部分分離,使它們都可以獨立地變化。
8. composite(組合):將物件組合成樹形結構以表示「部分-整體」的層次結構。c o m p o s i t e 使得使用者對單個物件和組合物件的使用具有一致性。
9. decorator(裝飾):動態地給乙個物件新增一些額外的職責。就增加功能來說,decorator 模式相比生成子類更為靈活。
10. facade(外觀) :為子系統中的一組介面提供乙個一致的介面,facade模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。
11. flyweight(享元):運用共享技術有效地支援大量細粒度的物件。
12. proxy(**) :為其他物件提供一種**以控制對這個物件的訪問。
13. interpreter(直譯器):給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。
14. template method(模板方法) :定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。templatemethod 使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。
15. chain of responsibility(責任鏈):使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。
16. command(命令) :將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化;對請求排隊或記錄請求日誌,以及支援可撤消的操作。
17. iterator(迭代器):提供一種方法順序訪問乙個聚合物件中各個元素, 而又不需暴露該物件的內部表示。
18. mediator(中介者):用乙個中介物件來封裝一系列的物件互動。中介者使各物件不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。
19. memento(備忘錄) :在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。
20. observer(觀察者):定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時, 所有依賴於它的物件都得到通知並被自動更新。
21. state(狀態) :允許乙個物件在其內部狀態改變時改變它的行為。物件看起來似乎修改了它的類。
22. strategy(策略):定義一系列的演算法,把它們乙個個封裝起來, 並且使它們可相互替換。本模式使得演算法可獨立於使用它的客戶而變化。
23. visitor(訪問者):定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。templatemethod 使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。
既然這23個模式被稱之為經典,那麼我們就應該將其銘記於心,最後依然將一句令人深思的話送個大家:有些事情,不是看到希望才去堅持,而是堅持了,才看得到希望!
閱讀筆記十四
在5g電信網路的架構設計中,目前有一種新的構建思想,就是使得龐大的接入網更加集中化,更加協作化 這裡和集中化不矛盾,集中化指相對分布各處的射頻單元的管理更加集中,而協作化指基帶處理裝置的互動更加密切,更多能夠承載核心網的既有功能,使得更貼近射頻前端,信令迂迴的路由更短,相對更加扁平 更加 雲 化,甚...
寒假閱讀筆記六
isss是針對美國22個中途中心的軟硬體公升級系統。它是 大規模採購活動的一部分,此次採購計畫分階段地在機場搭台 地面控制部門及越洋空中交通管制部門安裝類似的公升級系統。空中交通管制系統的兩個最重要的質量屬性需求 一 極高的可用性 保證系統不能正常工作的狀態只延續極短的時間。對故障影響的要求 二 高...
寒假閱讀筆記二
模式 每乙個模式描述了乙個在我們周圍不斷發生的問題及該問題解決方案的核心。這樣你就能一次又一次地使用該方案而不必做重複工作。分層 將系統在橫向維度上切分成幾個部分,每個部分負責一部分相對比較單一的職責,然後通過上層對下層的依賴和呼叫組成乙個完整的系統。分層時必須合理規劃層次邊界和介面,在開發過程中,...