扩展层次结构

时间:2016-07-12 20:09:41

标签: java oop

假设我正在使用一个库提供的形状:

class Shape
class Circle extends Shape
class Square extends Shape

但我想介绍红色形状的概念。我无法修改库但我可以创建:

class RedShape extends Shape

然而,这不能轻易扩展到RedCircle,因为它无法同时扩展RedShapeCircle

我不认为装饰器模式在这里有用,但是有没有实现这个的技术?

2 个答案:

答案 0 :(得分:1)

简短的回答可以在Effective java中找到Josh Bloch,第16项:赞成作文而不是继承

编辑:组合是你需要做的,真的。 Multiple inheritance is not allowed with java。人们有tried。他们有一些approaches。它们是writing papers。他们甚至使用代码生成工具或代理(在你的情况下不是jdk代理,它不能代表一个类),但没有什么比你想象的那么优雅。

答案 1 :(得分:0)

使用方法ColorablegetColor定义界面setColor,并使用彩色形状实现它。