参考文章:装饰器模式(IO流案例)
package com.swliu.demo;
public interface Coder {
public void code();
public void own();
}
package com.swliu.demo;
public class Student implements Coder {
public void code() {
System.out.println("会CRUD");
}
public void own() {
this.code();
}
}
package com.swliu.demo;
public abstract class ToTrainClassDecorator implements Coder{
private Coder coder;
public Coder getCoder() {
return coder;
}
public void setCoder(Coder coder) {
this.coder = coder;
}
public ToTrainClassDecorator(Coder coder) {
this.coder = coder;
}
public abstract void own();
}
package com.swliu.demo;
public class ToJavaTrainClassDecorator extends ToTrainClassDecorator{
public ToJavaTrainClassDecorator(Coder coder) {
super(coder);
}
public void own() {
this.getCoder().own();
this.code();
}
@Override
public void code() {
System.out.println("会Java编程");
System.out.println("会大数据编程");
}
}
package com.swliu.demo;
public class ToPythonTrainClassDecorator extends ToTrainClassDecorator {
public ToPythonTrainClassDecorator(Coder coder) {
super(coder);
}
public void own() {
this.getCoder().own();
this.code();
}
@Override
public void code() {
System.out.println("会Python编程");
System.out.println("会Python爬虫");
}
}
package com.swliu.demo;
public class TestCase {
public static void main(String[] args) {
Student student = new Student();
student.own();
System.out.println("---------");
Coder studentDecorator = new ToJavaTrainClassDecorator(student);
studentDecorator.own();
System.out.println("---------");
Coder studentDecorator2 = new ToPythonTrainClassDecorator(studentDecorator);
studentDecorator2.own();
}
}
打印信息:
会CRUD --------- 会CRUD 会Java编程 会大数据编程 --------- 会CRUD 会Java编程 会大数据编程 会Python编程 会Python爬虫



