Work.java package test; public interface Work { public void insert(); } SquarePeg.java package test; // 方形桩 public class SquarePeg implements Work { public void insert() { System.out.println("方形桩插入"); } } Decorator.java package test; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; // 装饰器 public class Decorator implements Work { private Work work; // 额外增加的功能被打包在这个List中 private List others = new ArrayList(); // 在构造器中使用组合new方式,引入Work对象; public Decorator(Work work) { this.work = work; others.add("挖坑"); others.add("钉木板"); } public void insert() { newMethod(); } // 在新方法中,我们在insert之前增加其他方法,这里次序先后是用户灵活指定的 public void newMethod() { otherMethod(); work.insert(); } public void otherMethod() { ListIterator listIterator = others.listIterator(); while (listIterator.hasNext()) { System.out.println(((String)(listIterator.next())) + " 正在进行"); } } } Demo.java package test; public class Demo { public static void main(String[] args) { Work squarePeg = new SquarePeg(); Work decorator = new Decorator(squarePeg); decorator.insert(); } } 输出: 挖坑 正在进行 钉木板 正在进行 方形桩插入