【发布时间】: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