【发布时间】:2012-02-29 11:47:33
【问题描述】:
我在 Java 中工作
我为图边创建了一个很好的装饰器结构。我有两个顶点的基础边,然后我有一个加权装饰器,它为边添加权重,然后我有一个定向装饰器,为边添加方向。装饰器是使用接口和委托方法实现的(不是通过继承)。
现在我想添加另一个装饰器——一个流装饰器,对应一个流边。流边有方向和权重(容量),加上流。我如何在Java中实现这样的东西?我需要类似的东西
public class FlowEdge implements IEdge, IWeightedEdge, IOrientedEdge, IFlowEdge
{
private IEdge, IWeightedEdge, IOrientedEdge decorated;
private int flow;
//constructors, delegate methods...
但这显然是不可能的。
也许装饰器不是最好的使用模式。我想实现关注点的分离(所以我可以有正常、加权、定向边缘的任意组合),但还需要一个类中可能有多个装饰器的功能。这有可能吗?还是我过度设计了这个?
【问题讨论】:
-
为什么这“显然不可能”?你只能
extend一个类,但你可以implement任意数量的接口。 -
我的意思是线私有的IEdge,IWeightedEdge,IOOrientedEdge修饰;为了保留所有类型,我需要实现委托方法。
标签: java design-patterns decorator