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();
以上就是小编今天的分享了,希望可以帮助到大家。