装饰模式:通过某种方法将被装饰的类的对象传入进该类,通常是在构造方法中传入。然后,再在类中写增强功能的方法,这些方法的内部,使用传入的被装式的对象的方法去实现的。
继承模式:如果需要对哪个类的方法的功能进行增强,那么就继承该类。并对要增强的方法进行重写,这样就可以实现方法功能的增强。
它们都可以对类的功能进行增强,在IO流中,比如很多流我们都可以给它们加上缓冲的功能,那么如果我们使用继承的话,我们将会给每一个要增强的类都要写一个子类,这样我们就要写很多的子类。因此就很麻烦,做了很多重复的工作。如果用装饰模式的话,在构造方法中传入流的基类,我们知道流的基类就只有四个,也就是说,我们最多只用写四个装饰类,就可以给继承了这四个类的所有的基础进行某一方法的功能增强。比如IO流中的BufferedReader,BufferedInputStream,BufferedOutputStream,BufferedWriter,这四个类都是对流进行缓冲的增强。因此这样我们就可以省下不少的重复的工作,也少了很多类。
希望能帮到你 |