装饰设计模式主要有四个部分1抽象组件(爷爷) 2具体类对象,待装饰类(父亲)3抽象装饰类(母亲)4具体装饰类(自己)最后使用的是自己, 自己能有所需要的装饰后的功能.
这个设计模式我自己本来理解的是,在原来有一个类class1的情况下想要对其增加功能,就创建一个新的类class 2,然后在新类class2的属性中有一个是原类class1的对象,然后在构造函数中对其进行初始化,随后如果需要增加什么功能就增加就好了.
-
现在看的视频有点疑惑,一开始难道就有一个抽象父类或者接口写好了吗.有点想不明白.
-
这样做也就只有装饰子类可以增加新功能而已,为什么还要抽象出装饰类的抽象父类
算了上代码吧
// 抽象接口,是最顶层的抽象组件
interface Coffee
{
public double cost();
public string info();
}
// 具体类, 也就是原来的待装饰的类
class OldCoffee implement Coffee
{
// 价格属性
public price = 10;
// 打印信息
public string name = "原来的咖啡";
@Override
public double cost(){
return price;
}
@Override
public string info(){
return name;
}
}
// 装饰者抽象类
class Decorate implement c{
// 属性中有具体类的类对象
OldCoffee cofe;
// 构造函数, 将带装饰对象传入
Decorate(Coffee c1)
{
this.cofe = c1;
}
@Override
public double cost()
{
// 这里进行具体的操作,目前在抽象类中,所有需要改变的都在具体类中改就行
return this.cofe.price;
}
xxx打这个好麻烦
}