// 抽象组建类
public abstract class Component {
public abstract void operate ();
}
// 组件的具体的实现类
public class ConcreteComponent extends Component {
@Override
public void operate() {
}
}
*/
// 抽象装饰着
public abstract class Decorator extends Component {
private Component component ;
public Decorator(Component component) {
this.component = component;
}
@Override
public void operate() {
component.operate();
}
}
public class ConcreteDecoratorA extends Decorator {
public ConcreteDecoratorA(Component component) {
super(component);
}
@Override
public void operate() {
operate();
onCreateA();
onCreateB();
super.operate();
}
public void onCreateA (){}
public void onCreateB () {}
}
// 角色介绍
Component : 抽象组建
可以是一个接口或抽象类,充当的就是被装饰的原始对象
ConcreteComponent: 组件的具体的实现类
该类 是Component的基本实现,也是我们的装饰类。
Decorator 抽象的装饰者
在多数的情况下,该类为抽象类,需要根据不同的装饰逻辑 实现不同的具体的子类,不要不同的装饰去实现不同的子类
ConcreteDecoratorA
只是对抽象装饰者做出具体的实现
public abstract class Penson {
public abstract void dressed ();
}
public class Boy extends Penson{
@Override
public void dressed() {
}
}
public abstract class PensonCloth extends Penson {
private Penson penson ;
public PensonCloth(Penson penson) {
this.penson = penson;
}
@Override
public void dressed() {
penson.dressed();
}
}
public class ExpensiveCloth extends PensonCloth {
public ExpensiveCloth(Penson penson) {
super(penson);
dressShirt () ;
}
public void dressShirt (){
}
}