1

这句话在面向对象编程方面意味着什么

装饰对象,以便您可以轻松添加/删除功能。

4

2 回答 2

2

一个好的 oops 设计基于开闭原则,Open 意味着一个类必须对扩展开放,close 意味着类对修改关闭。

装饰器模式使用这个原则,来扩展一个类的功能,你需要在它上面创建一个包装器。

IMO 学习模式的最佳方法是在标准实现中搜索它,您会发现该java io包是基于相同的模式构建的。

在 java.IO 包中,我们有

FileInputStream、StringBufferInputStream、ByteArrayInputStream

扩展基类 InputStream 的类。这些类能够被装饰器类装饰。

如果你曾经使用过 Java.IO 包,你一定使用过 BufferedInputStream,它是一个装饰过的 InputStream

.

于 2013-09-07T05:53:01.623 回答
1

装饰器模式基本上是子类覆盖一个方法,调用超类中被覆盖的方法(因此不会丢失功能),然后执行它自己的额外代码 - 装饰(即修饰)功能。

通过使用这种技术,并始终使用抽象类型引用对象(参见Liskov 替换原则),可以通过向客户端提供提供所需额外功能的具体类来轻松地交换增强功能。

可以在运行时或编译时决定使用哪个类(参见抽象工厂模式

于 2013-09-07T05:45:07.360 回答