java 디자인 모드의 관찰자 모드 (Observer)
2698 단어 java 디자인 모드
1. 관찰자: 한 대상의 상태를 업데이트하려면 다른 대상의 동기화 업데이트가 필요하고 다른 대상의 수량은 동적으로 가변을 추가할 수 있다.
2. 대상은 자신의 업데이트를 다른 대상에게 통지해야 하며 다른 대상의 구체적인 행위를 알 필요가 없다.
2. 관찰자 모델의 장점:
1. Subject와 Observer는 각각 독립적으로 변경할 수 있는 전송 결합입니다.
2. Subject가 방송 알림을 보낼 때 구체적인 Observer를 지정할 필요가 없다. Observer는 자체로subject에 가입할지 여부를 결정할 수 있다.
3. 디자인 방법: 세 개의 인터페이스, 한 피관찰자 실현류, 여러 관찰자 실현류, 한 장면류
1. 커넥터 3개
관찰자 인터페이스:Observer.java
관찰자 인터페이스:Observerable.java
피관찰자 업무 인터페이스(피관찰자의 행위): 예(IHanFeiZi.java)
2. 피관찰자 실현류(피관찰자 인터페이스와 피관찰자 업무 인터페이스 실현)
3. 관찰자(관찰자 인터페이스 실현)
관찰자와 피관찰자 인터페이스javajdk가 제공됨:
피관찰자 업무 인터페이스 (IHanFeiZi.java)
public interface IHanFeiZi {
public void haveBreakfast();
public void haveFun();
}
관찰자 구현 클래스: (HanFeiZi.java)
public class HanFeiZi implements IHanFeiZi, Observerable{
private ArrayList<Observer> observerList = new ArrayList<Observer>();
@Override
public void haveBreakfast() {
System.out.println(" : ");
notifyObservers(" ");
}
@Override
public void haveFun() {
System.out.println(" : ");
notifyObservers(" ");
}
@Override
public void addObserver(Observer observer) {
observerList.add(observer);
}
@Override
public void deleteObserver(Observer observer) {
observerList.remove(observer);
}
@Override
public void notifyObservers(String context) {
for(Observer observer : observerList){
//
observer.update(context);
}
}
}
관찰자 실현류:한페이즈위프.java
public class HanFeiZiWife implements Observer{
@Override
public void update(String context) {
System.out.println(" : ");
}
}
장면 클래스 코드:
client.java
public class Client {
public static void main(String[] args) {
HanFeiZi hanFeiZi = new HanFeiZi();
HanFeiZiWife hanFeiZiWife = new HanFeiZiWife();
hanFeiZi.addObserver(hanFeiZiWife);
hanFeiZi.haveBreakfast();
hanFeiZi.haveFun();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
어댑터(클래스 어댑터, 객체 어댑터 모드)1: 클래스 어댑터 모드 만일 우리가 Person류가 있다면, 이 Person류에는 불고 당기는 방법이 있다.시스템 개발의 절반에 이르러 우리는 이 종류에 두 가지 방법을 더 첨가하여 연주, 당기기, 연주, 노래의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.