工作中会涉及到对一个类,增加非核心功能,比如:给游戏人物增加皮肤
类图
特点
- 核心职责和修饰功能分开;核心职责由ConcreateComponent类实现,修饰功能由Decorator类的子类实现。
- 装饰类继承核心方法,同时增加一个核心类的引用属性
说明
- 当其他ConcreateComponent类时,可以直接让Decorator类继承前者,此时不需要额外增加Component类。
- 同理,没有其他ConCeateDecorator类,直接使用Decorator类
代码
/**********核心抽象类**************/
public interface Component
{
void hello();
}
/**********核心实现类**************/
public class ConcreateComponent implements Component
{
public void hello()
{
System.out.println("我负责核心职责1")
}
}
/**********装饰抽象类**************/
public abstract Dceorator implements Component
{
private Component cp;
public void hello()
{
if(null!=cp)
{
cp.hello();
}
}
public abstract void decoratorFunction();
}
/**********装饰实现类**************/
public class ConcreateDecorator extrends Decorator
{
public void hello()
{
super.hello()
decoratorFunction();
}
public void decoratorFunction()
{
System.out.println("我是修饰功能1")
}
}