Java中的委派和代理是兩種面向對象編程中的常用模式,能夠提高代碼的復用性和可維護性。下面我們分別介紹委派和代理的概念和用法。
1. 委派
委派是一種委托模式,即將任務分派給其他對象來處理。在Java中,委派通常是通過類的組合來實現的。例如:
public class A { void f() { System.out.println("A.f()"); } } public class B { void f() { System.out.println("B.f()"); } } public class C { private A a = new A(); private B b = new B(); void f() { a.f(); } void g() { b.f(); } }
在上面的代碼中,類C使用組合的方式將任務f分派給了類A來處理,將任務g分派給了類B來處理。
2. 代理
代理是一種包裝模式,即通過一個代理類來控制對實際對象的訪問。在Java中,代理通常是通過接口來實現的。例如:
public interface Subject { void request(); } public class RealSubject implements Subject { public void request() { System.out.println("RealSubject.request()"); } } public class Proxy implements Subject { private Subject subject; public Proxy(Subject subject) { this.subject = subject; } public void request() { subject.request(); } }
在上面的代碼中,接口Subject定義了請求的接口,實際對象RealSubject實現了該接口,代理對象Proxy也實現了該接口,并通過組合將實際對象傳入代理對象中進行控制。
總結
委派和代理都是通過組合的方式實現的,只是用途不同。委派是將任務分派給其他對象來處理,代理是通過代理對象控制對實際對象的訪問。在實際開發中,可以根據需求選擇使用不同的模式。