caf*_*00d 2 java oop class-design interface object-oriented-analysis
假设我的代码中已经有两个类:
class SomeOrder {
String getOrderId() { return orderId; }
}
class AnotherOrder {
String getOrderId() { return orderId; }
}
Run Code Online (Sandbox Code Playgroud)
如何围绕这两个类创建一个接口:
interface Order {
String getOrderId();
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我将修改代码,以便SomOrder implements Order和AnotherOrder implements Order,但这里的前提条件是,他们在我无法控制或编辑一个包属于(即它们来自外部的jar).
我的算法目前看起来像这样:
void sorter(List<SomeOrder> orders) {
... <custom sort logic> ...
someOrder.getOrderId();
}
void sorter(List<AnotherOrder> orders) {
... <custom sort logic> ...
someOrder.getOrderId();
}
Run Code Online (Sandbox Code Playgroud)
使用单一界面我可以写:
void sorter(List<Order> orders) {
... <custom sort logic> ...
order.getOrderId();
}
Run Code Online (Sandbox Code Playgroud)
您可以使用适配器类:
class SomeOrderAdapter implements Order {
private SomeOrder delegate;
@Override
public String getOrderId() {
return delegate.getOrderId();
}
}
Run Code Online (Sandbox Code Playgroud)
和类似的AnotherOrder.