黑马程序员技术交流社区

标题: 装饰类和继承应用中的说明 [打印本页]

作者: chenyanwei6    时间: 2016-12-1 23:13
标题: 装饰类和继承应用中的说明
装饰类和继承应用中的说明

举例说明:
继承体系:
MyReader//专门用于读取数据的类。
    |--MyTextReader
         |--MyBufferedTextReader
    |--MyMediaReader
         |--MyBufferedMediaReader
    |--MyDaraReader
         |--MyBufferedDataReader
         
class  MyBufferedReader{
     MyBufferedReader(MyTextReader text){
     
     }
     MyBufferedReader(MyMediaReader text){
     
     }
}
上面这个类扩展性很差。
找到其参数的共同类型。通过多态的形式,可以提高扩展性。

class MyBufferedReader{
    private MyReader r;
    MyBufferedReader(MyReader r){
   
    }
}

对上面的继承体系开始优化:(优化后,这个就是装饰体系)
     |--MyTextReader
     |--MyMediaReader
     |--MyDaraReader
     |--MyBufferedReader
     
装饰模式比继承灵活,避免了继承体系臃肿,而且降低了类与类之间的关系。

装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强功能。
所以装饰类和被装饰了通常都是属于一个体系中的。

建议:在开发中继承要写共同抽取出来的,可是继承不要写的过多,不要以继承为主,因为继承要是
以几个功能产生子类的话,体系会非常臃肿的,可以通过装饰的方式扩张这些类的功能。装饰设计的灵
活性体现,比如:之前定义了一个类中的几个功能,后来认为功能不够用了,想要增加几个新的功能模
块,在使用装饰的过程中,我只需要把之前的那个需要被装饰的类传到装饰的类中,即可完成功能模块的
扩展。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2