JAVA基礎之設計模式中的組合優於繼承
a. 程式碼在多個子類中重複;
b. 執行時的行為不容易改變;
c. 改變會牽一髮動全身,造成部分子型別不想要的改變;
問題提出
當修改超類(父類)時,無論是新增還是刪除,對於子類的影響都是非常大的,例如說定義了鴨子類, 然後有野鴨子、綠毛鴨、橡皮鴨。 我們希望新增入鴨子飛的行為, 那麼在父類中進行新增的話,就出現了會飛的橡皮鴨這種預料之外的情況。當然,我們可以在子類中通過空實現重寫該方法以解決該方法對於子型別的影響。那要是新增其他方法呢? 是不是要一個個去找子類,然後做空?
組合優於繼承
對於上面的問題,我們可以在父類中新增“行為”資料成員,針對每一個鴨子(類的例項)賦值不同的行為。把行為抽象成類,便可程式碼複用
相關推薦
JAVA基礎之設計模式中的組合優於繼承
a. 程式碼在多個子類中重複; b. 執行時的行為不容易改變; c. 改變會牽一髮動全身,造成部分子型別不想要的改變; 問題提出 當修改超類(父類)時,無論是新增還是刪除,對於子類的影響都是非常大的,例如說定義了鴨子類, 然後有野鴨子、綠毛鴨、橡皮鴨。 我們
JAVA基礎之設計模式和列舉
列舉 列舉是JDK1.5版本新增的特性(泛型、For-each等如今被廣泛應用的特性也是由JDK1.5時所新增的),另外到了JDK1.6後switch語句支援列舉型別; 列舉的使用情況: 有的時候一個類的物件是有限且固定的,這種情況下我們使用列舉類就比較方便; 列舉就是將
【Java-POJO-設計模式】JavaEE中的POJO與設計模式中多型繼承的衝突
最近看《重構》談到利用OO的多型來優化 if else 和 switch 分支語句,但是我發現OO語法中的多型在使用框架的JavaEE中是無法實踐的。對此,我感到十分的疑惑,加之之前專案中有個“狀態模式”類的模組被頻繁改動的需求折磨要死,又去看了《設計模式》。《設計模式》中也是強調,使
黑馬程式設計師----Java基礎之IO包中其它類
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g
java基礎——從設計模式討論介面
介面 1. 完全解耦 只要一個方法操作的是類而非介面,那麼就只能使用這個類及其子類。如果想使這個方法應用於不再此繼承結構中的某個類,那麼介面就可以在很大程度上放寬這種限制。例如: public class Processor { public String name() {
Java開發之設計模式--策略模式(Strategy Pattern)
模擬場景: 劉備要到江東娶老婆了,走之前諸葛亮給趙雲(伴郎)三個錦囊妙計,說是按天機拆開解決棘手問題,嘿,還別說,真是解決了大問題,搞到最後是周瑜陪了夫人又折兵呀,那咱們先看看這個場景是什麼樣子的。 先說這個場景中的要素:三個妙計,一個錦囊,一
設計模式之------設計模式中類的關係
設計模式中類的關係 這篇文章轉自快課網 在Java及其他面向物件的設計模式中,類與類之間的關係主要有6中關係: - 依賴(Dependence) - 關聯(Association) - 聚合(Aggregation) - 組合(Compositi
Java基礎總結之設計模式(四)
介面卡模式: 我們在開發程式的是時候,我們會寫介面,會寫介面的實現類,但是當介面中的方法很多時,我們則會因為為了使用裡面的一個功能而"被迫"實現介面中的所有方法。這樣的效率是很低的。就算是介面中其他的方法全部空實現,那對於程式碼的冗餘等爺都是很大的。所以介面卡模式是思想是將一個介面轉換成客戶希望
Java基礎總結之設計模式(五)
動態代理:本來應該自己做的事情卻請了別人來做,被請的人就是代理物件。所謂動態代理就是在程式執行過程中產生的這個物件。動態代理通過反射實現。在Java中的java.lang.reflect包下提供了一個Proxy類和一個InvocationHandler介面,通過使用這個類和介面就可以生成動態代理物件
java設計模式分析之過濾器模式 、組合模式、外觀模式
一個優秀的android開源框架中往往會體現出很多Java設計模式的影子,瞭解設計模式有助於理解開源框架中的程式設計之美接下來我會將自己整理的對一些設計模式的理解記錄在這裡若您對我的分享感興趣可以訪問:java設計模式專欄本篇記錄:過濾器模式 、組合模式、外觀模式參考:1、過
java軟件設計模式——單例設計模式中的【餓漢式】與 【懶漢式】示例
nal pre turn new對象 構造方法 sta 餓漢式 () urn 以下為單例設計模式中的兩種經典模式的代碼示意: 1 單例設計模式(spring框架IOC,默認創建的對象都是單例的): 2 餓漢式: 3 public class Sing
Java學習筆記——設計模式之五.工廠方法
strong scanner multipl 石頭 simple 決定 定義 opera 下使用 水邊一只青蛙在笑 ——石頭和水 工廠方法模式(Factory Method),定義了一個用於創建對象的接口,讓實現類決定實例化哪一個類。工廠方法使一個類的實
Java學習筆記——設計模式之六.原型模式(淺克隆和深克隆)
catch 新的 att over 引用變量 col logs implement pri That there‘s some good in this world, Mr. Frodo. And it‘s worth fighting for. 原型模式(prot
Java學習筆記——設計模式之七.模板方法模式
tro mage emp java學習 java學習筆記 trac 子類 技術 primitive 模板方法模式(TemplateMethod),定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。
JAVA設計模式:組合模式
層次結構 lines end fadein java trac 抽象類 ddc 單個 組合(總體與部分關系)模式:將不同可是相關的對象組合成樹形結構以實現“部分-總體”的層次結構,使得用戶對單個對象和組合對象的使用具有一致性。 * 模式角色組成:
java設計模式系列之設計模式概要(1)
而不是 行為型模式 一句話 創建 rom 多次 ati 代理模式 之間 一、什麽是設計模式 設計模式(Design pattern)是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。
Java基礎 單例模式之懶漢式
懶漢 私有 珍惜 src pac auth 如果 x64 version 禮悟: 好好學習多思考,尊師重道存感恩。葉見尋根三返一,活水清源藏於零。 虛懷若谷良心主,皓月當空自在王。願給最苦行無悔,誠勸且行且珍惜。 os :
Java二十三設計模式之------工廠方法模式
分享 出現 角度 郵件 並且 拓展 如何 調用 三種 一、工廠方法模式 工廠方法模式有三種 1、普通工廠模式:就是建立一個工廠類,對實現了同一接口的一些類進行實例的創建。首先看下關系圖: 舉例如下:(我們舉一個發送郵件和短信的例子) 首先,創建二者的共同接口:
Java二十三設計模式之-----適配器模式
log size print pan sys www. com 目標接口 16px 一、適配器模式 適配器模式將某個類的接口轉換成客戶端期望的另一個接口表示,目的是消除由於接口不匹配所造成的類的兼容性問題。主要分為三類:類的適配器模式、對象的適配器模式、接口的適配器模
Java二十三設計模式之-----橋接模式
second his manager man @override end html con 太多的 一、橋接模式(Bridge) 橋接模式就是把事物和其具體實現分開,使他們可以各自獨立的變化。橋接的用意是:將抽象化與實現化解耦,使得二者可以獨立變化,像我們常用的JDBC橋