相同的方法(尽管有不同的实现)。
如果您希望能够将它们互换使用,请为这些方法创建一个接口。但是由于这些Generate()
方法做不同的事情,所以不要将它们包含在接口中。您甚至可能应该将它们命名为不同的名称,即GenerateStream()
和GenerateXml()
至于实现的交集(相同的属性,可能是部分方法),您应该尝试将逻辑和表示分离。所以这对你来说可能是一个更好的方法:
+--------+ +----------------------+
| Chart | | <<interface>> |
|--------| | ChartRenderer |
|-data | |----------------------|
|-labels | |+setChart(Chart chart)|
|- ... | |+... |
+--------+ +----------------------+
^ ^
| |
+----------------+--+ +--+----------------+
|BitmapChartRenderer| |VectorChartRenderer|
|-------------------| |-------------------|
|+generateStream() | |+generateXml() |
+-------------------+ +-------------------+