インターフェース 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() { ... }
}
どちらのアプローチが優れていますか? 私はリスコフの原理を知っています。EnhancedSubject が Liskov 原則を満たしているとしましょう。あなたはまだ継承を考えていますか?
サブジェクト インターフェイスがない場合 (つまり、RealSubject がインターフェイスを実装していない場合)、プロキシ パターンに実装するインターフェイスがないため、「継承とオーバーライド」が唯一のオプションのようです。サブジェクト インターフェイスがない場合でもプロキシ パターンを適用できますか?