必发365乐趣网投我创建了一个泛型的装饰器来封装各类

当前位置:必发365娱乐官方网站 > 必发365乐趣网投 > 必发365乐趣网投我创建了一个泛型的装饰器来封装各类
作者: 必发365娱乐官方网站|来源: http://www.trans-bali.com|栏目:必发365乐趣网投

文章关键词:必发365娱乐官方网站,多重继承

  目前有这样的需求:需要扩展某类库中一些类的功能,这些类都继承自“按钮”类,我需要为它们添加统一的功能,其中有些功能需要重写“按钮”类的一些方法。

  这种情况即便写一个接口规定好方法签名,也还是要在每一个扩展类里分别写一遍功能代码的,遇到需要修改的情况必定苦不堪言。

  我想这个情况如果能有多重继承就最好不过了,但Java和C#都不支持多重继承,C#到3.0才支持扩展方法,但扩展方法也是很受限的,比如没法实现重写方法(PS:我这项目是Java的,最好也别考虑C#扩展方法),那么该如何变通实现多重继承呢?

  你这里没有看到多重继承啊,试试装饰(Decorator)模式,应该有足够的灵活性, 难道你不知道?

  装饰器模式确实不错,我创建了一个泛型的装饰器来封装各类,就是需要重写很多方法,必发365乐趣网投量太大最后借助正则表达式完成了。;)

  @写代码的小2B:@写代码的小2B: 我的意思是以单继承的方式分别继承上面每一个类做扩展的话,需要分别重复编写扩展的功能代码,这样维护起来是灾难啊。必发365乐趣网投

  一个按钮,如果上面放个图像,建图像按钮类;如果上面放文本,建文本按钮类;如果有图像有文本,建图像文本按钮类......

  这种情况即便写一个接口规定好方法签名,也还是要在每一个扩展类里分别写一遍功能代码的,遇到需要修改的情况必定苦不堪言。

  我也觉得这种场景用装饰模式很适合啊。如果你每一个扩展类要重写的代码都完全不一样,那就什么办法都没有,改起来还是要一个一个改。 但是如果,每一个扩展类要重写的代码有共性,那就把一个共性抽象出一个装饰类。那么以后修改的话,只需要统一修改装饰类(有几个共性就几个装饰类)就好了。

  Ctrl+Enter键快速提交清除回答草稿您需要登录以后才能回答,未注册用户请先注册。©2004-2021博客园

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!