这个陈述在面向对象编程方面意味着什么
装饰对象,以便轻松添加/删除功能。
答案 0 :(得分:2)
良好的oops设计基于开放式关闭原则,Open意味着必须打开一个类进行扩展和关闭意味着该类关闭以进行修改。
Decorator模式使用这个原则来扩展你需要在它上面创建一个包装器的类的功能。
IMO学习模式的最佳方法是在标准实现中搜索它,你会发现java io
包是建立在相同模式上的。
在java.IO包中我们有
FileInputStream,StringBufferInputStream,ByteArrayInputStream
扩展基类InputStream的类。这些类能够由装饰器类进行装饰。
如果您曾经使用过Java.IO包,那么您必须使用它 BufferedInputStream是一个装饰的InputStream
答案 1 :(得分:1)
decorator pattern基本上是子类重写方法,调用超类中的重写方法(因此不是丢失功能),然后执行自己的额外代码 - 装饰(即修饰功能。
通过使用这种技术,并始终使用抽象类型引用对象(请参阅Liskov Substitution Principle),通过为客户端提供提供所需额外功能的具体类,可以轻松地交换增强功能。
可以在运行时或编译时决定使用哪个类(参见Abstract Factory pattern)