POSA邊讀邊寫 1

2021-04-06 15:22:03 字數 1345 閱讀 2597

拿到這本書,就感覺posa是繼gof之後的又一經典之作。

序中介紹,

posa拓展了模式的範圍,從原來的設計模式,拓展了新的高層次的體系機構模式,和底層的和程式語言相關的慣用法模式。

提出了新的模式分類方法 (根據規模/抽象層次)

提出了模式系統,來幫助我們利用模式來設計

什麼是模式:

模式是乙個描述,它描述了乙個經過了前人實踐充份考量過的解決方案的綱要

。這個解決方案綱要可以指導我們解決乙個問題族, 即 「在特定的設計環境中重複出現的相似問題」。這個綱要的主要內容是介紹需要建立的各個元件的職責和他們之間的協作策略。

內涵 vs. 外延

如果從內容(內涵)和形式(外延)的角度看模式,可見模式的內容是小的,它畢竟只描述了特定環境下一類問題的解決綱要。

所以模式的表現形式是多樣的,都出現了專門的「模式風格」的模式表現形式研究分支(不過俺沒有興趣)。譬如,posa中模式的表現形式與gof中有些不同,不過區別不大,表現為三個最主要的部分:

如果從綱要(內容)和方案(外延)的角度來看,模式描述的解決綱要是比較大的,這表現在採用了某個模式而設計的解決方案,通常變數比較少,具有相同/相似的組成結構,行為方式和特性。通常,可以依照模式設計出很多軟體框架(framework),如果設計變數很多的話,是不可能做到的。譬如,ace_reactor框架就是reactor模式的實現。

模式系統

模式系統統一描述模式分類,說明模式之間的關係,說明他們之間如何相互交織。

模式類別: posa根據,模式中綱要所涉及的範圍和抽象層次,定義了三個類別/層次:

體系結構模式: 提供了一套預定義的子系統,規定他們的職責,幷包括了如何組織這些子系統的規則和指南。如此,體系結構模式捕獲了軟體整體構建中的常用原理。

設計模式:提供了用於細化各個子系統和元件的結構和通訊策略的綱要。如此,設計模式捕獲了在定義了系統整體結構之後,解決那些常見問題的辦法。

慣用法模式:如何用特定的程式語言來實現一些特定的功能和特性。總是和特定的程式語言相干,如此,慣用法模式捕獲了很多程式設計經驗。

模式關係: 模式不是孤立的它們有著:( 抽象—細化),(主體—變體), (部分—組合)的關係。理解和理順這些關係是綜合應用各個模式來設計系統的關鍵。posa模式系統,和gof的模式關係圖,就是為我們做了這方面的研究。

模式是軟體設計方法學的很好的補充,正如俺為"oo&pattern"寫的標題分類說明中所寫的那樣,pattern讓你站在了巨人的肩上,oo是你手中的利劍,你將無往而不利。

不過,還是要說pattern並沒有強制你一定要用oo,不過個人認為,用oo的時候最好是要運用pattern,運用pattern的最好的環境還是oo設計時。利劍還是讓巨人來揮舞才有氣勢,有作用;巨人沒有利劍,力氣大也不頂事,對不? :-)

Akka邊學邊寫(4) MiniRPG

前面幾篇文章用akka寫了helloworld和echoserver,為了更進一步學習akka,本文將會實現乙個非常小的rpg遊戲server minirpg。由於是迷你rpg,所以邏輯非常easy。server能夠處理四種操作 建立玩家 給玩家加經驗 公升級 查詢玩家資訊。以下是player類的 ...

練習 打表與邊寫邊求

輸入乙個數,和乙個數字,如34553 5,得到乙個新的數字55 即將數字5抽離出來形成新數 現輸入兩組求得到的兩個新數的和。數的範圍是0 10 10。input 34545 345676 5output 8法一 打表法,想找到需要的資訊 要得到55,先要的到5,接著得到5出現的次數 include ...

邊學邊寫資料結構之線性表

學習的時候能將自己學到的東西寫出來也是一種很好的學習方法,它既能加深學習的效果,又能知道自己對學習內容的了解情況。如果你寫不出來也就說明你對所學的內容並不是完全了解,還有值得重新學習的地方。本人大學只學習過乙個學期的c 語言,其他諸如資料結構與演算法壓根就沒有學過,奈何畢業後從事的是與軟體開發有關的...