//20210118
前面写了:期末考试刚结束,考了面向对象。 里面有23种设计模式。 考试结束后我想一个一个地实现。 本文实现装饰者模式
中心思想:
创建具有原始属性的对象,并通过添加类逐个装饰原始对象
源代码如下所示。
//初始接口
公共界面最大{
字符串获取结果(;
}
//具有初始属性的类
publicclassnormalmanimplementsman {
私有字符串名称;
publicnormalman(stringname ) {
this.name=name;
}
@Override
公共字符串获取
返回名称' : ';
}
}
//抽象装饰类
publicabstractclassattachedpropertiesdecoratorimplementsman {
私有最大;
publicattachedpropertiesdecorator (man ) {
this.man=man;
}
@Override
公共字符串获取
return man.getDes (;
}
}
//实现装饰类1
publicclasscardecoratorextendsattachedpropertiesdecorator {
private String car='有车';
publiccardecorator (man ) {
super(man;
}
公共字符串添加卡
return this.car ';
}
@Override
公共字符串获取
return super.getDes () this.addCar );
}
}
//实现装饰类2
publicclassdepositedecoratorextendsattachedpropertiesdecorator {
private String deposite='有存款';
publicdepositedecorator (man ) {
super(man;
}
公共字符串添加深度(
return this.deposite ';
}
@Override
公共字符串获取
return super.getDes () this.addDeposite );
}
}
//实现装饰类3
publicclasshousedecoratorextendsattachedpropertiesdecorator {
private String house='有房间';
publichousedecorator(manman ) {
super(man;
}
publicstringaddhouse ((return this.house ' ) );
}
@Override
公共字符串获取
return super.getDes () this.addHouse );
}
}
//实现装饰系统4
publicclassqualitydecoratorextendsattachedpropertiesdecorator {
私有字符串质量='有好的质量';
publicqualitydecorator (man ) {
super(man;
}
公共字符串添加质量
return this.quality ';
}
@Override
公共字符串获取
return super.getDes () this.addQuality );
}
}
//测试主类
public class Main {
publicstaticvoidmain (string [ ] args ) {
manman=newnormalman(DDDGS );
system.out.println(man.getdes );
man=newcardecorator(man; //输入车的属性
system.out.println(man.getdes );
man=newdepositedecorator(man; //加入存款金属性
system.out.println(man.getdes );
man=newhousedecorator(man; //输入房屋属性
system.out.println(man.getdes );
man=newqualitydecorator(man; //输入房屋属性
system.out.println(man.getdes );
}
}
输出:如下所示
以上是
希望对大家有帮助