定义:
装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
1,1不改变原类文件。
2,不使用继承。
3,动态扩展。
//先创建一个待修饰的类
public class Component{
//创建一个方法
void method();
}
//创建需要装饰的类的具体实现类 按照规矩来
public class ComonentServiceImpl implements Component {
public void method(){
System.out.println("Hello word");
}
}
//创建装饰类 装饰类最好是抽象类 因为抽象类继承接口 可以不去实现
public abstract class dectorator implement Component{
proteced Component component;
public dectorartor(Component component){
this.component=component;
}
public void method(){
this.component.method;
}
}
package com.md.decorator;
public class ConcreteDecoratorAA extends DecotratorA {
public ConcreteDecoratorAA(ComponentA componentA) {
super( componentA );
}
@Override
public void method() {
System.out.println( "继承AA" );
super.method();
System.out.println( "继承AA结束" );
}
}
package com.md.decorator;
public class MainA {
public static void main(String[] args) {
//原来的方法
ComponentA componentA = new ConcreateComponentA();
componentA.method();
//装饰A的方法
ConcreteDecoratorAA concreteDecoratorAA = new ConcreteDecoratorAA();
concreteDecoratorAA.method();
}
}
graph BT
A["ComonentServiceImpl"] -->B["Component"]
C["dectorator"]---B["Component"]
D["DecotratorA"]-->C["dectorator"]