public class Test2 {
/**
* 装饰模式
* 毕业学生
*/
public static void main(String[] args) {
HeiMaStudent hm = new HeiMaStudent(new Student());
hm.code();
}
}
interface code{
public void code();
}
class Student implements code{
public void code(){
System.out.println("javase");
System.out.println("javaweb");
}
}
//包装一下应届毕业生
class HeiMaStudent implements code{
//获取被装饰类的引用
private Student s;
//在构造方法中传入被装饰类得对象
public HeiMaStudent(Student s){//相当于要对学生进行包装
this.s = s;
}
//对原有得功能进行升级
@Override
public void code() {
s.code();//因为我对学生进行包装我当然就具备学生所具有的功能
System.out.println("html");//把功能进行升级 学了html
System.out.println("javascript");//把功能进行升级 学了javascript
System.out.println("jspservlet");//把功能进行升级 学了html
System.out.println(".....");
}
//包装后学了这么东西 在找工作是不是就不愁了 呵呵
}
总结:
装饰设计模式的好处是什么呢 那么就是耦合性没有那么强 我也可以继承student 重写code() 可是父类做了改动子类也就跟着改动了
还有一个优点 就是我可以选择包装类就很多 好像bufferReader(Reader in) 包装Reader 可以选择bufferReader 也可以选择别的包装类 如果是继承得化耦合性就太强了