色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java 代理和組合

錢瀠龍1年前7瀏覽0評論

Java是目前最流行的編程語言之一,支持多種編程范式,包括面向?qū)ο蟆⑦^程式和函數(shù)式編程。在Java中,代理和組合是兩種常用的設(shè)計(jì)模式,用于實(shí)現(xiàn)對象之間的依賴關(guān)系,以增強(qiáng)代碼復(fù)用性和可擴(kuò)展性。

代理是指一個(gè)對象通過代理另一個(gè)對象來訪問其方法和屬性。Java中提供了兩種代理模式:靜態(tài)代理和動(dòng)態(tài)代理。靜態(tài)代理需要在編譯時(shí)確定代理類和被代理類,而動(dòng)態(tài)代理則可以在運(yùn)行時(shí)動(dòng)態(tài)生成代理類。

// 靜態(tài)代理示例
public interface Subject {
void request();
}
public class RealSubject implements Subject {
public void request() {
System.out.println("RealSubject request executed.");
}
}
public class ProxySubject implements Subject {
private RealSubject realSubject;
public ProxySubject(RealSubject realSubject) {
this.realSubject = realSubject;
}
public void request() {
beforeRequest();
realSubject.request();
afterRequest();
}
private void beforeRequest() {
System.out.println("Before RealSubject request.");
}
private void afterRequest() {
System.out.println("After RealSubject request.");
}
}

組合是指一個(gè)對象包含其他對象作為其成員變量,形成對象之間的層次關(guān)系。Java中的組合模式通常使用接口或抽象類定義組合對象,具體實(shí)現(xiàn)通過繼承來實(shí)現(xiàn)。

// 組合模式示例
public interface Component {
void operation();
}
public class Leaf implements Component {
public void operation() {
System.out.println("Leaf operation executed.");
}
}
public abstract class Composite implements Component {
private Listchildren = new ArrayList<>();
public void add(Component c) {
children.add(c);
}
public void remove(Component c) {
children.remove(c);
}
public void operation() {
beforeOperation();
for (Component c : children) {
c.operation();
}
afterOperation();
}
protected abstract void beforeOperation();
protected abstract void afterOperation();
}
public class CompositeA extends Composite {
protected void beforeOperation() {
System.out.println("Before CompositeA operation.");
}
protected void afterOperation() {
System.out.println("After CompositeA operation.");
}
}
public class CompositeB extends Composite {
protected void beforeOperation() {
System.out.println("Before CompositeB operation.");
}
protected void afterOperation() {
System.out.println("After CompositeB operation.");
}
}

綜上所述,代理和組合是Java中常用的兩種設(shè)計(jì)模式,可以使代碼更加簡潔、靈活和可維護(hù)。在實(shí)際應(yīng)用中,需要根據(jù)具體場景選擇合適的模式來進(jìn)行設(shè)計(jì)和實(shí)現(xiàn)。