gpt4 book ai didi

java - 在 Java 中使用装饰器设计模式时,装饰器的顺序重要吗?

转载 作者:行者123 更新时间:2023-12-02 12:04:29 26 4
gpt4 key购买 nike

在阅读有关 Java I/O 类的使用时,我看到许多对象的多种变体用于获得另一个结果,我想知道按特定顺序放置这些对象是否重要,或者无论如何我都必须使用它们按什么顺序。

例如:

BufferedReader br = new BufferedReader(new FileReader(FILENAME)))

BufferedReader“包装”FileReader 是否重要,反之亦然?以这种方式编写的代码是否会以相同的方式工作:

new FileReader(new BufferedReader(FILENAME))

我不仅仅说只使用两个对象时的情况,当我们使用更多对象时,“包装器”的顺序重要吗?

最佳答案

Does it matter if BufferedReader "wraps" FileReader and not vice versa? Would the code work the same way when it were written that way:

new FileReader(new BufferedReader(FILENAME))

是的,确实如此。顾名思义,FileReader 读取文件,而 BufferedReader 则不会,因此将文件名传递给 BufferedReader 没有意义,并且无法编译。

另一方面,

FileReader读取文件。将其他流传递给它是没有意义的,因为它是用来读取文件的,而不是其他流,因此将 BufferedReader 传递给它不会编译。

现在,在某些情况下顺序可能并不重要,但在这种情况下,顺序却很重要。

但请注意,FileReader 不是装饰器。

关于java - 在 Java 中使用装饰器设计模式时,装饰器的顺序重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47000912/

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