관찰자 모드 와 감청 모드

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;
	}
	
	
	
	
	
}


우 리 는 감청 을 사용 한 후에 관찰자 와 피 관찰 자 를 분리 할 수 있다 는 것 을 발견 할 수 있다.

좋은 웹페이지 즐겨찾기