我用 Java 工作
我为图形边缘创建了一个很好的装饰器结构。我有带有两个顶点的基边,然后有一个加权装饰器,可以为边添加权重,然后有一个定向装饰器,可以为边添加方向。装饰器是使用接口(interface)和委托(delegate)方法(而不是通过继承)实现的。
现在我想添加另一个装饰器 - 流装饰器,对应于流边缘。流边具有方向和权重(容量),以及流。我如何在Java中实现这样的事情?我需要类似的东西
public class FlowEdge implements IEdge, IWeightedEdge, IOrientedEdge, IFlowEdge
{
private IEdge, IWeightedEdge, IOrientedEdge decorated;
private int flow;
//constructors, delegate methods...
但这显然是不可能的。
也许装饰器不是最好使用的模式。我想实现关注点分离(这样我就可以拥有正常、加权、定向边缘的任意组合),但也需要一个类中可能有多个装饰器的功能。这有可能吗?还是我设计过度了?
最佳答案
Decorators are implemented using interfaces and delegate methods (not by inheritance).
我认为这可能是你碰壁的原因。装饰器模式通过使用继承和多态性在 Java 中很好地产生了自身。这是“用一种语言编程与用一种语言编程”的一个很好的例子。
关于java - 装饰器模式 - 如何同时装饰两种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9186597/