裝飾器模式git
public interface IDecorated { void print(); }
public class Decorated implements IDecorated{ @Override public void print() { System.out.println("decorated print ..."); } }
public abstract class Decorator implements IDecorated { private IDecorated decorated; public Decorator(IDecorated decorated){ this.decorated = decorated; } public void print(){ decorated.print(); } }
public class DecoratorA extends Decorator{ public DecoratorA(IDecorated decorated){ super(decorated); } @Override public void print() { super.print(); System.out.println("decoratorA print ..."); } } public class DecoratorB extends Decorator{ public DecoratorB(IDecorated decorated){ super(decorated); } @Override public void print() { super.print(); System.out.println("decoratorB print ..."); } }
public static void main(String[] args) { IDecorated decorated = new Decorated(); Decorator decorator = new DecoratorA(decorated); decorator.print(); decorator = new DecoratorB(new DecoratorA(decorated)); decorator.print(); }
decorated print ... decoratorA print ... decorated print ... decoratorA print ... decoratorB print ...
https://github.com/Seasons20/DisignPattern.git
ENDgithub