【问题标题】:Decorator pattern limitations装饰器模式限制
【发布时间】:2023-01-22 23:06:06
【问题描述】:

我有一个用例,我正在尝试使用装饰器模式但不确定它是否是使用模式的正确方法。 我有 2 个消息发布者类。 第一个发布者以 json 作为输入并发布消息 第二个发布者将字节作为输入并发布消息

目前这两个是单独的类

public class A {
    publish(Json input);
}

public class B {
    publish(byte[] input);
}

我想用 A 装饰 B 而不是创建一个单独的类。基本上用户会以 Json 的形式提供输入,然后将其转换为压缩字节并发布到接收器。 但是我在这里想到的问题是,虽然我可以用 A 装饰 B,但我不能用 B 装饰 A,原因是 json 可以转换为字节流,但所有字节流都不能转换为 json 格式,并且正在做所以会抛出异常。

所有装饰器类都继承相同的父接口,因此可以以任何可能的组合来装饰类。因此,为了使装饰器模式正常工作,所有装饰器都必须彼此兼容,而不管它们的应用顺序如何。这种理解是正确的还是我在装饰器模式中遗漏了一些东西。

【问题讨论】:

    标签: java design-patterns decorator


    【解决方案1】:

    您对模式的理解几乎是正确的。但是您不需要做任何事情来使类兼容,因为装饰器对象只是向装饰对象添加一些方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      • 1970-01-01
      • 2018-04-10
      • 2012-02-04
      相关资源
      最近更新 更多