所谓装饰设计模式,就是对已有对象进行功能增强。
毕老师的视频第19天06讲,讲的很清楚。
可以定义一个类,把已有对象传入,基于已有功能并提供加强功能,自定义类就称为装饰类。
例如:java.io包中有一个Reader类,类中提供了read()读取一个字符的方法,
但是每次读取一个字符不太方便,于是出现了BufferedReaderl类,此类是Reader的增强类,有一个构造方法是BufferedReader(Reader in);接受了Reader作为参数,增加了readLine()方法读取一行。这就是装饰设计模式
装饰模式要比继承灵活,避免了继承体系的臃肿,而且降低了类之间的关系。
当类与类之间有明显共性特性,又有自己的特有方法时就用继承。
而当类中的方法不够用时,为了增强类中的方法,这时候就建立一个新类传入已知类对已有方法进行增强,用到装饰模式。如果此时用继承的化,也可以实现,但是继承多了的化就继承体系就比较臃肿。没有装饰模式优化。 |