Java 設計模式學習筆記1——策略模式(Duck例子)
0、假設現有工程(Duck)中遇到為類添加功能的問題,如何設計類添加新的功能?
1、利用繼承提供的Duck(鴨子)的行為會導致哪些缺點?
(1)代碼在多個子類中重復
(2)很多男知道所有鴨子的全部行為
(3)運行時的行為不容易改變
(4)改變會牽一發動全身,造成其他鴨子的不想要的改變
【設計原則】
找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需呀變化的代碼混在一起
2、分開變化與不會變化的部分
將Duck分成兩部分,鴨子類和鴨子行為。
類的固有屬性和共用的方法寫在類中,行為另起一個類(這裏說的類也可能是接口)
3、設計行為
鴨子類實現類中實現設計接口的方法,這樣就可以在運行時動態第加載行為方法。
【設計原則】
針對接口編程,而不是針對實現編程
“針對接口編程”,關鍵就是利用多態編程。通過多態編程,子類實例化的動作不在需要在代碼中硬編碼,而是在運行時才指定具體的思想對象。
4、整合鴨子行為
5、封裝行為大局觀,如下圖:
【設計原則】
多用組合,少用繼承。
Java 設計模式學習筆記1——策略模式(Duck例子)
相關推薦
Java 設計模式學習筆記1——策略模式(Duck例子)
利用 實例化 top 而是 實現 學習筆記 left ng- 多個 0、假設現有工程(Duck)中遇到為類添加功能的問題,如何設計類添加新的功能? 1、利用繼承提供的Duck(鴨子)的行為會導致哪些缺點? (1)代碼在多個子類中重復 (2)很多男知道所有鴨子的全部行為
設計模式學習筆記2: 策略模式(Strategy)
模擬 Comparable public interface Comparable { int compareTo(Object ob); } public class Test { public static void main(String
【設計模式學習筆記】策略模式
In computer programming, the strategy pattern (also known as the policy pattern) is a behavioral software design pattern that enables select
設計模式學習筆記(1)-----設計模式6大原則
單一職責原則 Single Responsibility Principle(SRP) 每一個介面就承擔一個責任(或者說是一類的責任),儘量做到只有一個原因引起變化 ps:電話機通話的過程可以分為 ,撥打電話->通話->結束通話電話 這裡撥打 和 結束通話 都是物理層面
設計模式之禪學習筆記04--策略模式
-----謹以此文表明汪先生學過設計模式 1.策略模式 定義一組演算法,將每個演算法都封裝起來,並且使它們之間可以互換。 類圖: ● Strategy抽象策略 策略、演算法家族的抽象,通常為介面,定義每個策略或演算法必須
java設計模式學習筆記--抽象工廠模式
1. 什麼是抽象工廠模式 抽象工廠模式提供一個介面,用於建立相關或依賴物件的家族,而不需要明確指定具體類。 也就是說抽象工廠模式是用來 建立產品的家族的。 為了理解這個定義,我們先要搞清楚什麼是產品的家族。 那麼什麼是產品的家族哪,我的理解就是一群相
java設計模式學習筆記--簡單工廠模式
1. 什麼是簡單工廠模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(Static Factory Method)模式。簡單工廠模式是由一個工廠物件決定創建出哪一種產品類的例項。但是嚴格來說,簡單工廠模式不是設計模式,它更像是一種程式設計習慣。 2.
設計模式學習筆記-適配器模式(對象適配器)
ring ons col class pat ima pub 不兼容 public 一、概述 將一個類的接口轉換為客戶希望的另外一個接口。Adapter模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作; 二、模式中的角色 Target:定
設計模式學習筆記-橋接模式
學習 write images 基礎 abs 分離 對象 bsp uml 一、概述 將抽象部分與它的實現部分分離,使它們都可以獨立地變化。 二、模式中的角色 Abstraction:定義抽象類的接口;維護一個指向Implementor類型對象的指針;
設計模式學習筆記 C#代碼(一)
內容 編程 繼承 color 模式 c# 派生類 ive spa 《深入淺出設計模式》學習筆記第一章 原始需求和設計 事情是這樣開始的,公司需要做一套程序,鴨子,設計如下: 一個鴨子父類,多個派生類,三個可override的方法。 第一次需求變更 我們要會飛的鴨子!!!!
C#設計模式學習筆記-單例模式
最近在學設計模式,學到建立型模式的時候,碰到單例模式(或叫單件模式),現在整理一下筆記。 在《Design Patterns:Elements of Resuable Object-Oriented Softwa
大話設計模式學習筆記-工廠方法模式
ole stat 決定 vol 設計 乘除 under 結果 缺點 工廠方法模式 工廠方法模式定義一個用於創建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。 簡單工廠模式的優缺點 簡單工廠模式最大的優點在於工廠類中包含了必要的邏輯判斷,根據客
設計模式之禪(1)-策略模式
文章目錄 一、進一步的改進 二、用策略模式組織類關係例項 更多關於設計模式的文章請點選:設計模式之禪(0)-目錄頁 一、進一步的改進 上面的動物園例子似乎已經足夠地完善了,但是仔
設計模式學習筆記-工廠方法模式
定義: 建立一個工廠介面和建立多個工廠實現類,這樣一旦需要增加新的功能,直接增加新的工廠類就可以了,不需要修改之前的程式碼。 解決問題: 簡單工廠模式的問題,類的建立依賴工廠類,也就是說,如果想要拓展程式,必須對工廠類進行修改,這違背了閉包原則 動機(Motivate)
設計模式學習筆記-觀察者模式
連結:http://www.cnblogs.com/wangjq/archive/2012/07/12/2587966.html 1. 概述 有時被稱作釋出/訂閱模式,觀察者模式定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某一個主題物件。這個主題物件在狀態發生變化時,會通知
設計模式學習筆記-抽象工廠模式
工廠方法模式是為了克服簡單工廠模式的缺點而設計出來的,簡單工廠模式的工廠類隨著產品類的增加需要增加額外的程式碼),而工廠方法模式每個具體工廠類只完成單個例項的建立,所以它具有很好的可擴充套件性。。但是在現實生活中,一個工廠只建立單個產品這樣的例子很少 定義: 抽象工廠(Abstract Fa
設計模式學習筆記九------外觀模式
目錄 本文的結構如下: 什麼是外觀模式 模式的結構 程式碼示例 優點和缺點 適用環境 模式應用 模式擴充套件 補充 一、前言 話說某天空氣質量回到秦漢,月色如水傾瀉,溫度適宜,微風襲人,我在院子樹下架起圓木桌,擺上雕花凳,桌上依次擺放紅燒肘子,燒牛肉,剁椒
【設計模式學習筆記】過濾器模式
過濾器模式:這種模式允許開發人員使用不同的標準來過濾一組物件,通過邏輯運算以解耦的方式把它們連線起來。這種型別的設計模式屬於結構型模式,它結合多個標準來獲得單一標準。【菜鳥】其實就是按條件篩選一組物件出來。 文章目錄 1.1 定義車 1.2
HeadFirst設計模式讀書筆記之策略模式
1. 例子 1. 做一個鴨子模擬器,裡面有很多不同的鴨子,有的可以游泳,有的可以睡覺,有的可以呱呱叫,一般套路是定義一個鴨子的超類,在 超類裡定義睡覺,游泳,呱呱叫的方法,再讓不同的鴨子子類繼承這個超類,實現自己的display()方法來表現鴨子的行為,像下面這樣: 2. 但如果要加一個可以吃火鍋的鴨子呢,
【設計模式學習筆記】狀態模式
狀態模式,這裡的狀態模式和EDA中的狀態設計方法相似,但又是不同的。下面這句話是網上的解釋:類的行為是基於它的狀態改變的。這種型別的設計模式屬於行為型模式。在狀態模式中,我們建立表示各種狀態的物件和一個行為隨著狀態物件改變而改變的context物件。【菜鳥教程】