请告诉我这是否不合适(特别是 Programmers.SE 或其他东西是否更适合这个问题。)
好吧。因此,我目前将许多“特征”表达为接口。我们称它们为“可更新”和“可破坏”。将它们表达为接口的缺点是我无法在所有“可破坏”组件之间共享行为;另一方面,将它们表示为抽象类意味着如果没有将混合特征显式定义为另一个抽象类(“UpdateableAndDestructible”),我就无法混合和匹配,而且这感觉像是滥用抽象类功能。然而,如果没有更干净的方法来处理这个问题,这可能就是我最终要做的事情。
对于这个难题的纯 Java 解决方案我有哪些选择?我是否可以描述共享行为,然后根据我认为合适的方式进行混合和匹配,而不必明确描述我将使用的每个排列?
也许您可以通过使用接口和默认实现的组合来实现目标。
Like:
public interface Updatable {
void updated();
}
public interface Loadable {
void load();
}
public class DefaultUpdatable implements Updatable {
...
}
public class DefaultLoadable implements Loadable {
...
}
public class SomeObject implements Updatable, Loadable {
private final Updatable updatable = new DefaultUpdatable();
private final Loadable loadable = new DefaultLoadable();
public void load() {
this.loadable.load();
}
public void updated() {
this.updatable.updated();
}
}
仍然很吵,也许没有你想要的那么灵活,但也许比执行 UpdatableAndDestructable 更干净一些。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)