我已经读过装饰器对客户端比适配器更透明,正是这种透明性使得嵌套装饰成为可能.在这种情况下,透明度实际上意味着什么?
PS:我知道这两种设计模式.所以你可以根据这个前提来回答你的问题.
装饰器获取给定类型A的对象,并将其包装到相同类型A的对象中.客户端可以使用装饰对象,就像它使用实际对象一样,因为它们具有相同的类型.
适配器获取给定类型A的对象,并将其包装到另一个类型B的对象中.然后,使用原始类型A的客户端必须适应使用另一种类型B.
也就是说,如果我们使用适配器模式,那恰恰是因为客户端需要类型B的对象,而我们只有A类型的对象.所以我们将它包装到适配器中,使其成为B类型的对象.
这两种模式使用相同的原理(包装),但出于不同的目的.一个装饰器来改变原始对象的行为.用于更改其类型的适配器.