下面是一个装饰模式的一个简化的代码实例
client.java 文件里的内容
public class Client
{
public static void main(String[] args)
{
// 认为他是节点流
Component component = new ConcreteComponent();
Component component2 = new ConcreteDecorator1(component);
Component component3 = new ConcreteDecrator2(component2);
component3.doSomething();
}
}
ConcreteDecorator1.java文件里的内容
public class ConcreteDecorator1 extends Decorator
{
public ConcreteDecorator1(Component component)
{
super(component);
}
@Override
public void doSomething()
{
super.doSomething();
this.doAnotherThing();
}
private void doAnotherThing()
{
System.out.println("功能B");
}
}
ConcreteDecrator2.java文件里的内容
public class ConcreteDecrator2 extends Decorator
{
public ConcreteDecrator2(Component component)
{
super(component);
}
@Override
public void doSomething()
{
super.doSomething();
this.doAnotherThing();
}
private void doAnotherThing()
{
System.out.println("功能C");
}
}
Decorator.java文件里的内容
public class Decorator implements Component
{
private Component component;
public Decorator(Component component)
{
this.component = component;
}
@Override
public void doSomething()
{
component.doSomething();
}
}
ConcreteComponent.java文件里的内容
public class ConcreteComponent implements Component
{
@Override
public void doSomething()
{
System.out.println("功能A");
}
}
Component.java文件里的内容
public interface Component
{
public void doSomething();
}