gpt4 book ai didi

java - 装饰一个装饰器

转载 作者:搜寻专家 更新时间:2023-10-31 20:30:40 25 4
gpt4 key购买 nike

在实现装饰器模式并编写了几个装饰器之后,我注意到 API 允许用户堆叠不兼容的装饰器。这是 API 设计者应该接受的模式的自然约束,还是我对模式的错误实现?

例如,假设有一个类可以用二进制装饰器装饰,以二进制形式对数据进行编码,或者使用字符串装饰器,以字符串形式对数据进行编码。鉴于使用了字符串装饰器,它可能会进一步使用 JSON 或 XML 装饰器进行装饰。现在很明显,在应用了 JSON 装饰器之后,在它上面使用 XML 装饰器是不兼容的,或者如果使用了二进制装饰器,则 XML/JSON 装饰器是没有用的。

使用 java.io 包的 Java 示例:

InputStream is = someInputStream;
BufferedInputStream bis = new BufferedInputStream(is);
ObjectInputStream ois = new ObjectInputStream(bis);
DataInputStream dis = new DataInputStream(ois);

此结果未定义,但 API 允许。

最佳答案

装饰器使组合功能变得容易。组合功能是否有意义取决于 API 用户。

关于java - 装饰一个装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6149384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com