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

java觀察者和策略模式

錢斌斌1年前6瀏覽0評論

在Java中,觀察者和策略模式是兩種常見的設計模式。觀察者模式是一種行為型模式,它定義了一種一對多的依賴關系,讓多個觀察者對象同時監聽某一個主題對象,當主題對象狀態發生變化時,會通知所有的觀察者對象,使它們能夠自動更新自己。策略模式是一種行為型模式,它定義了一組算法,將每個算法都封裝起來,并且使它們之間可以互相替換,讓算法的變化獨立于使用它們的客戶端。

// 觀察者模式的示例
// 定義一個觀察者接口
public interface Observer {
void update(String message);
}
// 定義一個主題接口
public interface Subject {
void registerObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers(String message);
}
// 實現一個主題類
public class ConcreteSubject implements Subject {
private Listobservers = new ArrayList<>();
public void registerObserver(Observer observer) {
observers.add(observer);
}
public void removeObserver(Observer observer) {
observers.remove(observer);
}
public void notifyObservers(String message) {
for (Observer observer : observers) {
observer.update(message);
}
}
}
// 實現一個觀察者類
public class ConcreteObserver implements Observer {
private String name;
public ConcreteObserver(String name) {
this.name = name;
}
public void update(String message) {
System.out.println(name + " received message: " + message);
}
}

在上面的代碼中,觀察者模式的主題類為ConcreteSubject,觀察者類為ConcreteObserver。當主題對象的狀態發生變化時,主題對象會調用notifyObservers()方法,通知所有的觀察者對象。觀察者對象在收到通知后,會根據通知內容進行更新。

// 策略模式的示例
// 定義一個策略接口
public interface Strategy {
int doOperation(int num1, int num2);
}
// 實現兩種策略類
public class OperationAdd implements Strategy {
public int doOperation(int num1, int num2) {
return num1 + num2;
}
}
public class OperationSubtract implements Strategy {
public int doOperation(int num1, int num2) {
return num1 - num2;
}
}
// 實現一個策略模式的上下文
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public int executeStrategy(int num1, int num2) {
return strategy.doOperation(num1, num2);
}
}

在上面的代碼中,策略模式的策略接口為Strategy,實現了兩個策略類OperationAdd和OperationSubtract。策略模式的上下文為Context,它通過傳遞不同的策略對象來執行不同的策略。