此文為筆者在閱讀【深入淺出設計模式(Head First Design Patterns) 」一書所作的筆記。
設計模式種類:
策略模式(Strategy Pattern):定義演算法家族,個別封裝起來,讓它們之間可以交互替換,此模式讓演算法的變動,不會影響到使用演算法的程式。
觀察者模式(Observer Pattern):出版者 + 訂閱者 = 觀察者模式。『觀察者模式』定義了物件之間的一對多關係,如此一來,當一個物件改變狀態,其他相依者都會收到通知並自動被更新。
裝飾者模式(Decorator Pattern):動態地將責任加諸於物件上。若要擴充功能,裝飾者提供了比繼承更有彈性的選擇。
工廠方法模式(Factory Method Pattern):定義了一個建立物件的介面,但由次類別決定要實體化的類別為何者。工廠方法讓類別把實體化的動作,交由次類別進行。
抽象工廠模式(Abstract Factory Pattern):提供了一個介面,建立相關或相依物件之家族,而不需要明確指定具象類別。
獨體模式(Singleton Pattern):確保一個類別只有一個實體,並給它一個存取的全域點(global point)。
命令模式(Command Pattern):將「請求」封裝成物件,以便使用不同的請求、佇列、或者日誌,參數化其他物件。命令模式也支援可復原的作業。
轉接器模式(Adapter Pattern):將一個類別的介面,轉換成另一個介面以供客戶使用。轉接器讓原本介面不相容的類別可以合作無間。
表象模式(Facade Pattern):提供了一個統一的介面,用來存取次系統中的一群介面。表象定義了一個較高層次的介面,讓次系統更容易使用。
表象模式(Facade Pattern):提供了一個統一的介面,用來存取次系統中的一群介面。表象定義了一個較高層次的介面,讓次系統更容易使用。
樣板方法模式(Template Method Pattern):將一個演算法的骨架定義在一個方法中,而演算法本身會用到的一些方法,則是定義在次類別中。樣板方法讓次類別在不改變演算法架構的情況下,重新定義演算法中的某些步驟。
設計守則:
一、找出程式中可能需要更動之處,把它們獨立出來,不要和那些不需要更動的程式碼混在一起。把會變動的部分取出並『封裝』起來,好讓其他部分不會受到影響。
『把會變動的部分取出並封裝起來,以便以後可以輕易地擴充此部分,而不影響不需要更動的其他部分。」
二、寫程式是針對介面而寫,而不是針對實踐方式而寫。
三、多用合成,少用繼承。
四、設計時,盡量讓需要互動的物件之間關係鬆綁。
五、類別應該開放,以便擴充;應該關閉,禁止修改。雖然似乎有點矛盾,但是的確有一些技術可以允許程式碼,在不直接修改的情況下進行擴充。小心地選擇哪些部分以後可能需要被擴充。到處採用開放關閉守則,是一種浪費也沒必要,而且會導致程式碼變得複雜且難以讀取。
六、依賴抽象類別,不要依賴具象類別。
七、認識極少化守則「只和你的密友談話」。
八、好萊塢守則「別呼叫(打電話給)我們,我們會呼叫(打電話給)你。」
沒有留言:
張貼留言