Java中的继承,委托和装饰

为了更好的实现对代码的复用,我们经常采取继承,委托或装饰等方法。它们有着各自的应用场景和独特的优势。
    1.应用场景
    装饰模式主要是面向一些类中不同功能的实现可以进行各种组合。装饰模式可以在不创造更多子类的情况下,将功能加以扩展。装饰模式是利用装饰类作为一种类似代理类的方式进行设计的模式。
    委托是一个对象请求使用另一个对象的功能。它是对象级别的重用机制。如果一个类只需要复用另一个类的部分方法,用委托机制实现会更方便。
    继承是类级别的重用机制。通过继承,一个类可以复用或重写父类的方法,也可以派生出许多子类。当多个类具有从属关系并且需要复用大部分方法时,可以用继承来实现。
    2.各自的优势
    继承:当多个类中存在相同的属性和方法时,可以将这些内容提取到单独一个类(或接口)中。这样就无需再定义这些相同属性和行为,只要继承那个类即可。如果子类中需要更多属性或需要实现更多方法,直接在子类里添加即可。这是Java中多态的前提,让许多类之间产生从属或并列关系,提高了代码的复用度和可维护性。
    委托:如果一个类只需要复用另一个类的一小部分方法,那么使用继承可能会出现大量无用而又重复的代码。如果采取委托机制来复用,就可以简便的调用另一个类的所需要的方法。
    装饰:如果一个类需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性。并且有时我们可能无法预见何时会拓展一个类的功能。而装饰允许这些功能由用户动态决定加入的方式和时机。它可以动态的给一个对象添加额外的功能,用起来很灵活。

posted @ 2021-07-02 14:41  StarTemplar  阅读(166)  评论(0)    收藏  举报