관찰자 모드 와 감청 모드
18300 단어 디자인 모드
Pawn 류
package test;
import java.util.ArrayList;
import java.util.List;
public class Pawn {
private List<Leader> leaders=new ArrayList<>();
public void attach(Leader l){
leaders.add(l);
}
public void detach(Leader l){
leaders.remove(l);
}
public void standGuard( ){
System.out.println("Pawn: find enemies ,I wanna report Sir");
if(true/*find enemies*/){
for(Leader leader:leaders){
leader.order( "find enemies");
}
}
}
public static void main(String args[]){
Pawn p=new Pawn();
p.attach(new Captain());
p.standGuard();
}
}
리더 클래스
package test;
public interface Leader {
public void order(String string);
}
캡틴 클래스
package test;
public class Captain implements Leader {
@Override
public void order(String msg) {
// TODO Auto-generated method stub
System.out.println("Captain:recevie a message:"+msg);
}
}
위의 소스 코드 는 관찰자 모델 의 간단 한 실현 이다.볼 수 있 습 니 다. 사실 간단 합 니 다.어떤 일 을 촉발 할 때 다른 종 류 를 호출 하 는 방법 입 니 다.
감청 모드 는 관찰자 와 피 관찰자 사이 에 다 리 를 놓 는 리더 와 Caption 류 가 Pawn 류 로 변 하지 않 는 다 는 것 이다.
package listener;
import java.util.ArrayList;
import java.util.List;
public class Pawn {
private List<Leader> leaders=new ArrayList<>();
private List<Listener> listeners=new ArrayList<>();
public Pawn(){
attach(new Captain());
addListener(new Listener(){
@Override
public void handleEvent(EventString es) {
// TODO Auto-generated method stub
for(Leader leader:leaders){
leader.order(es.getMsg());
}
}
});
}
public void attach(Leader l){
leaders.add(l);
}
public void detach(Leader l){
leaders.remove(l);
}
public void addListener(Listener l){
listeners.add(l);
}
public void removeListener(Listener l){
listeners.remove(l);
}
public void standGuard( ){
System.out.println("Pawn: find enemies ,I wanna report Sir");
if(true/*find enemies*/){
EventString e=new EventString("find enemies: type =footman");
for(Listener l:listeners){
l.handleEvent(e);
}
}
}
public static void main(String args[]){
Pawn p=new Pawn();
p.standGuard();
}
}
listener 클래스
package listener;
public interface Listener {
public void handleEvent(EventString e);
}
EventString 클래스
package listener;
public class EventString {
private String msg;
public EventString(String msg) {
super();
this.msg = msg;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
우 리 는 감청 을 사용 한 후에 관찰자 와 피 관찰 자 를 분리 할 수 있다 는 것 을 발견 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.