java - 装饰器模式 - 如何同时装饰两种类型

标签 java design-patterns decorator

我用 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/

相关文章:

java - 如何使用 Retrofit2 和 RxJava2 抛出自定义异常

java - Java 中 LTRIM 和 RTRIM 的一个好的替代方案是什么?

java - jackson :根据字段类型添加后缀

typescript - NestJS测试: decorator is not a function

python - 将装饰器与可调用对象一起使用时返回用户定义的函数名称

python - 了解在单个语句中使用多个 python 装饰器

java - 移位并将字符转换为 unicode 转义字符串

java - 重构基于 boolean 的流程

android content provider - 隐藏内部复杂性但允许复杂查询的设计模式

java - 验证库设计模式选择