首页 > 代码库 > 装饰和继承的区别

装饰和继承的区别

子类用的技术都是一样的,那么有必要给他单独定一个子类吗?

这就是装饰模式生成的原因。

 

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);

}

 

---------------------------------