假设有一个接口Subject。
interface Subject { void request(); }
我们有一个 RealSubject 类。假设我们想要增强 RealSubject,我们可以使用包裹 RealSubject 的代理模式:
class Proxy implements Subject {
private RealSubject ref;
void request(){ ... }
}
或者我们可以扩展 RealSubject 并覆盖该方法
class EnhancedSubject extends RealSubject {
@Override
void request() { ... }
}
哪种方法更好?我知道 Liskov 原则;假设 EnhancedSubject 满足 Liskov 原则。你还考虑继承吗?
如果没有接口Subject(即RealSubject 没有实现任何接口),似乎“继承和覆盖”是唯一的选择,因为在代理模式中没有要实现的接口。如果没有 Subject 接口,你还能应用代理模式吗?