假设我正在使用一个库提供的形状:
class Shape
class Circle extends Shape
class Square extends Shape
但我想介绍红色形状的概念。我无法修改库但我可以创建:
class RedShape extends Shape
然而,这不能轻易扩展到RedCircle
,因为它无法同时扩展RedShape
和Circle
。
我不认为装饰器模式在这里有用,但是有没有实现这个的技术?
答案 0 :(得分:1)
简短的回答可以在Effective java中找到Josh Bloch,第16项:赞成作文而不是继承。
编辑:组合是你需要做的,真的。 Multiple inheritance is not allowed with java。人们有tried。他们有一些approaches。它们是writing papers。他们甚至使用代码生成工具或代理(在你的情况下不是jdk代理,它不能代表一个类),但没有什么比你想象的那么优雅。
答案 1 :(得分:0)
使用方法Colorable
和getColor
定义界面setColor
,并使用彩色形状实现它。