class Person
{
void chifan()
{
System.out.println("chifan");
}
}
class SuperPerson
{
private Person p;
SuperPerson(Person p)
{
this.p = p;
}
public void superChifan()
{
System.out.println("开胃酒");
p.chifan();
System.out.println("甜点");
System.out.println("来一根");
}
}
/*
装饰设计模式:
可以对原有对象的功能进行增强。
只要将原有对象作为参数传递给装饰类的构造函数即可。
对外提供增强方法。
通过以前所学,继承一样可以解决这个问题。
那么装饰和继承有什么区别?
继承方式增强每一个子类对象。
Writer
|--FileWriter
|--BufferedFileWriter。
|--MediaWriter
|--BufferedMediaWriter
|--DataWriter
|--BufferedDataWriter
这样的设计可以完成基本需求,但是导致了继承体系的臃肿,而且子类功能的重复。
--------
class BufferedWriter
{
char[]
BufferedWriter(FileWriter w)
{
}
BufferedWriter(MediaWriter w)
{
}
BufferedWriter(DataWriter w)
{
}
public void write()
{
}
}
class BufferedWriter extends Writer
{
BufferedWriter(Writer w)
{
}
public void write()
{
}
}
Writer
|--FileWriter
|--MediaWriter
|--DataWriter
|--BufferedWriter
*/
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person();
p.chifan();
//SuperPerson sp = new SuperPerson(p);
//sp.superChifan();
}
}