假设我使用的库提供了以下形状:
class Shape
class Circle extends Shape
class Square extends Shape
Run Code Online (Sandbox Code Playgroud)
但我想介绍红色形状的概念.我无法修改库但我可以创建:
class RedShape extends Shape
Run Code Online (Sandbox Code Playgroud)
然而,这不能轻易扩展到RedCircle因为它不能同时延伸RedShape和Circle.
我不认为装饰器模式在这里工作得很好但是有没有实现这个的技术?
简短的答案可以在Josh Bloch 的《Effective java》中找到,第 16 条:优先考虑组合而不是继承。
编辑:构图是你需要做的,真的。java 不允许多重继承。人们已经尝试过。他们有一些办法。他们正在写有关它的论文。他们甚至使用代码生成工具或代理(在您的情况下不是 jdk 代理,它不能代理类),但没有什么像您可能想要的那样优雅。
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |