我有许多已经实现的java类。我想在这些类中添加一些行为;在某些情况下,这种行为可能对所有类都相同。还假设我无法创建超类,因为所有类都已经实现。
我的问题是我在这方面有哪些选择。
接口:对于某些接口,我可能只实现一次并让类共享单个实现(因为在某些情况下,所需的实现对于所有类都是相同的)。这样可以避免在所有类中手动复制代码。
我想过定义一个抽象类并让类扩展抽象类;问题是,在这种情况下,sublcasses不会是抽象类的有意义的扩展,因为它们不会形成有意义的层次结构。
感谢。
答案 0 :(得分:2)
如果接口方法的实现不依赖于实现类的成员,并且您使用的是Java 8,则可以为接口的方法提供默认实现。
答案 1 :(得分:0)
您可以使用"代表团"图案。使用定义要添加的行为的方法(或方法)定义新接口,并为行为的每个变体定义实现类。让每个现有类引用它所需的任何实现类的实例。 "委托模式"的维基百科页面;在Java和其他语言中有一些很好的简单示例:https://en.wikipedia.org/wiki/Delegation_pattern