讀《大話設計模式》學習小結(一)裝飾器模式

2021-08-13 14:27:52 字數 1263 閱讀 9544

前言,作為個人總結設計模式學習的第一篇文章,我們先說點別的。設計模式在早以前我就有在看,並且部分模式也做了對應的總結。故前

三、四篇的內容將是我之前做的總結,現在放到部落格上。或許是因為看《大話設計模式》而做總結的原因,自身也受其影響,在總結中也會帶有些生活的元素。此外,我還會配上自己寫的例項**,以方便理解。有心的讀者希望也能多寫寫**,設計模式,只有到你遇到相應的問題及環境時才會覺得它的好處。

此文及同系列設計模式小結文章面向的讀者:該領域的萌新。因為,此處的小結是學習小結,乙個比較概述的個人理解。用我的方式讓你了解它,所以可能也未及全面。有深入**興趣的夥伴請直接讀原書籍《大話設計模式》。

小小的感言,《大話設計模式》一書我是讀完了的,當然後半部分看得比較快。這第一遍看完後我並沒有感覺自己學會了如何使用多少設計模式。我學到的更多的是有這麼些設計模式,它們可以用於什麼場景。還有我認為更重要的,蘊含在設計模式中的核心(我認為的核心):抽象思維、減少重複**的思維。然後的話,目前我僅對我認識比較深及平時接觸多的設計模式作總結,也就是不會把20多個設計模式都立馬都寫一遍。而且感覺自己寫的**還不夠多,沒遇到對應的場景,就沒有相應的體會。有想法的設計模式再寫進部落格吧。

廢話扯了一大車,正文開始。

裝飾器模式:抽象核心職責,使用繼承,通過子類對父類方法的「裝飾」(方法重寫,保留父類行為並增加其他裝飾功能),動態地為父類新增其他職責、行為。

還是課堂上那個熟悉的「漢堡」:

public abstract class component

public class concretecomponent extends component

}public abstract class decorator extends component

@override

void operation() }}

public class concretedecoratora extends decorator

void adddrumstick()

}public class concretedecoratorb extends decorator

void addcheese()

}public class concretedecoratorc extends decorator

@override

void operation()

}public class client

}

輸出:

加辣的芝士雞腿漢堡來了

芝士漢堡來了

大話設計模式之裝飾器模式

裝飾器模式可以理解為為現有的類的新增一些並列的相互解耦的功能。舉個例子就是在i o中 流stream 和 reader writer 都有許多裝飾,而且他們之間沒有聯絡相互解耦。裝飾器模式的優點就是他可以有效的把類的核心功能和裝飾的功能區分開,並且可以去除其中的相關類中重複的裝飾邏輯。舉個例子 乙個...

大話設計模式之裝飾器模式

背景 乙個人出去約會,給這個人新增一些裝飾如穿什麼樣的上衣 下衣 領帶 鞋子等等。裝飾模式 動態的給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。uml類圖 被裝飾的具體物件person類 1 public class person 78 public person str...

《大話設計模式》學習筆記(一)

大話設計模式 學習筆記 一 物件導向的三大特性 封裝 繼承和多型。第乙個設計模式,也是我最常用的設計模式,簡單工廠模式。這個設計模式比較好理解,就是簡單的switch.case.語句。在學習這一章的過程中,主要是uml圖的理解,uml圖中有幾個概念必須掌握,那就是 關聯 聚合 依照書本中的例子來說,...