把很多要完成的功能,加载在子类上,类的继承,看起来很笨重,装饰着模式是在没有更改固有类文档和使用继承的状况下,借助建立一个包裝对象动态地拓展一个对象的功能,相比较形成子类更加灵活多变。下边我来为大伙儿介绍一下Java装饰者模式。
在装饰模式中的角色有:
●抽象构件(Component)角色:得出一个抽象插口,以标准提前准备接受额外义务的对象。
●实际构件(ConcreteComponent)角色:界定一个即将接受额外义务的类。
●装饰(Decorator)角色:拥有一个构件(Component)对象的案例,并界定一个与抽象构件插口一致的插口。
●实际装饰(ConcreteDecorator)角色:承担给构件对象“贴上”额外的义务
源码
抽象构件角色
publicinterfaceComponent{
publicvoidsampleOperation();
}
实际构件角色
publicclassConcreteComponentimplementsComponent{
@Override
publicvoidsampleOperation(){
//写相关的业务代码
}
}
装饰角色
publicclassDecoratorimplementsComponent{
privateComponentcomponent;
publicDecorator(Componentcomponent){
this.component=component;
}
@Override
publicvoidsampleOperation(){
//委任给构件
component.sampleOperation();
}
}
实际装饰角色
publicclassConcreteDecoratorAextendsDecorator{
publicConcreteDecoratorA(Componentcomponent){
super(component);
}
@Override
publicvoidsampleOperation(){
super.sampleOperation();
//写相关的业务代码
}
}