12 修飾模式

2021-08-18 08:55:36 字數 2132 閱讀 3314

我曾經以為應該用繼承處理一切。後來領教到執行時擴充套件,遠比編譯時期的繼承威力大。

本章可以稱為「給愛用繼承的人乙個全新的設計眼界」。我們即將再度**典型的繼承濫用問題。在本章將會學到如何使用物件組合的方式,做到在執行時裝飾類。一旦你熟悉了裝飾的技巧,你講能在不修改任何底層**的情況下,給你的(或別人的)物件賦予新的職責。

如果僅僅使用繼承,那麼關係將會如下圖:

由於業務的擴充套件產生很多的子類,所以我們可以通過修飾模式,從而進行組合擴充套件。

**實現如下:

packagedecorater;

public inte***ceicar

packagedecorater;public classcarimplementsicar 

}

packagedecorater;public classsupercarimplementsicar 

@override

public voidmove()

}

packagedecorater.supercar;importdecorater.icar;importdecorater.supercar;public classaicarextendssupercar 

@override

public voidmove()

}

packagedecorater.supercar;importdecorater.icar;importdecorater.supercar;public classflycarextendssupercar

@override

public voidmove()

}

packagedecorater.supercar;importdecorater.icar;importdecorater.supercar;public classwatercarextendssupercar 

@override

public voidmove()

}

packagedecorater;importdecorater.supercar.aicar;importdecorater.supercar.flycar;importdecorater.supercar.watercar;public classtest 

}

結果:

陸地上跑

+++++++++++普通車++++++++++++++

陸地上跑

水上游+++++++++++水上游的超跑++++++++++++++

陸地上跑

水上游智慧型遙控

+++++++++++人工智慧的水上游超跑++++++++++++++

陸地上跑

水上游智慧型遙控

天上飛+++++++++++集齊所有功能的超跑++++++++++++++

Vue 12 事件修飾符

一 知識點部分 內聯處理器 clickme clickme 事件修飾符 vue.js 為 v on 提供了 事件修飾符。通過由點 表示的指令字尾來呼叫修飾符 obj1 obj2 obj3 obj4 var content new vue methods 這些修飾符使得我們不需要處理麻煩的dom細節,...

VUE課程 12 事件修飾符

vue中可以可以用事件修飾符來做我們事件操作中常用的阻止預設事件 event.preventdefault 或者阻止事件冒泡 event.stoppropagation 等事件操作 vue中常用的事件修飾符有.stop 阻止冒泡 prevent 阻止預設事件 capture 使用事件捕獲模式 sel...

(12)策略模式

定義 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。型別 行為類模式 類圖 策略模式是對演算法的封裝,把一系列的演算法分別封裝到對應的類中,並且這些類實現相同的介面,相互之間可以替換。在行為類模式中,有一種模式也是關注對演算法的封裝 模版方法模式,對照類圖可以看到,策略模式與模版方...