在 Java 中,我使用装饰器模式。有时 Object
具有多种类型,因为它可以用许多类进行装饰。我怎样才能获得一个对象的所有不同类型?
abstract class: plate
concrete class: JapanesePlate, WesternPlate
abstract plateDecorator extends plate
concrete decorators: MeatPlateDecorator, TomatoPlateDecorator,
有时,JapanesePlate
可以用 MeatPlateDecorator
装饰或TomatoPlateDecorator
或两者兼而有之。
我只是想知道是否有什么办法可以知道这一点?
最佳答案
您无法找到形成任意装饰层次结构的所有类,因为装饰器有一个装饰类的实例,并且不形成is-a> 关系。
来自 JDK 的具体示例:BufferedInputStream是输入流的装饰器。它是包含 FilterInputStream
和 InputStream
的类层次结构的一部分,但它没有告诉您任何有关它正在装饰的类的信息。
如果您碰巧知道 BufferedInputStream
是如何实现的,您可以使用反射来检查它正在装饰的流,但这并不能帮助您检查,例如 BufferedOutputStream
>.
关于java - 如何列出 Java 中对象扩展的所有类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14942939/