java decaf是什么,讓我們一起了解一下?
decaf是一般視覺識別的深度卷積刺激特征,decaf是一個開放源代碼,實現了這些深層卷積激活特性,以及所有相關的網絡參數,使視覺研究人員能夠在一系列視覺概念學習范例中進行深層表征的實驗。
那如何正確高效理解decaf讓我們更好的認知和學習呢?
我們通過學習設計模式之裝飾者模式來系統了解。
首先裝飾者模式是動態地將責任附加到對象上。若要擴展功能,裝飾者提供了比繼承更有彈性的替代方案。
我們要以飲料為主體,然后在運行時以調料來“裝飾”(decorate)飲料。比方說,如果顧客想要摩卡和奶泡深焙咖啡,那么,要做的是:
1、拿一個深焙咖啡(DarkRoast)對象
2、以摩卡(Mocha)對象裝飾它
3、以奶泡(Whip)對象裝飾它
4、調用cost()方法,并依賴委托(delegate)將調料的價錢加上去。
但是如何“裝飾”一個對象,而“委托”又要如何與此搭配使用呢?那就是把裝飾者對象當成“包裝者”,讓我們看看這是如何工作的:
1、以DarkRoast對象開始。
2、顧客想要摩卡(Mocha),所以建立一個 Mocha對象,并用它將DarkRoast對象包(wrap)起來。Mocha對象是一個裝飾者,它的類型“反映”了它所裝飾的對象(本例中,就是 Beverage)。所謂的“反映”,指的就是兩者類型一致。
所以Mocha也有一個cost()方法。通過多態,也可以把Mocha所包裹的任何Beverage當成DarkRoast是Beverage(因為Mocha是Beverage的子類
型)。
3、顧客也想要奶泡(Whip),所以需要建立一個Whip裝飾者,并用它將Mocha對象包起來。別忘了,DarkRoast繼承自Beverage,且有一個cost()方法,用來計算飲料價錢。Whip是一個裝飾者,所以它也 反映了DarkRoast類型,并包括一Mocha 個cost()方法。?
4、現在,該是為顧客算錢的時候了。通過調用最外圈裝飾者(Whip)的cost()就可以辦得到。Whip的cost()會先委托它裝飾的對象(也就是Mocha)計算出價錢,然后再加上奶泡的價錢。
代碼實現:
/** ?*?@author?[email protected] ?*?@description?飲料抽象類 ?*?@date?2019/9/17?20:53 ?*/ public?abstract?class?Beverage?{ ????String?description?=?"Unknown?Beverage"; ????public?String?getDescription()?{ ????????return?description; ????} ????/** ?????*?cost方法是用來返回飲料的價錢(需在具體類中自己實現) ?????* ?????*?@return ?????*/ ????public?abstract?BigDecimal?cost();
以上就是小編今天的分享了,希望可以幫助到大家。