子类用的技术都是一样的,那么有必要给他单独定一个子类吗?
这就是装饰模式生成的原因。
class MyBufferReader{
MyBufferedReader(被提高效率的类1 class){}
MyBufferedReader(被提高效率的类2 class){}
MyBufferedReader(被提高效率的类3 class){}
}
--------------------------------
优化后的代码A:
class MyBufferReader extends 父类{
private 父类 class;
MyBufferedReader(父类 class){}
//组合结构
}
---------------------------------
装饰模式,比继承要灵活;降低了类与类之间的关系。
装饰类因为增强已有对象,具备的功能和已有的对象是相同的,只不过提供了更强的功能。所以装饰类和被装饰类,通常都属于一个体系中。
-----------------------
装饰类,覆盖Reader类中的抽象方法
public void close(){
class.close();
}
public int read(char[] buf, int off, int len){
return r.read(buf, off, len);
}
---------------------------------
装饰和继承的区别
时间: 2024-10-11 11:04:22