자바 모니터 의 실현 과 원리 에 대한 상세 한 설명
감청 기 는 말 그대로 어떤 사건(절차)의 발생 상황 을 감청 하고 관찰 하 는 것 이다.감청 되 는 사건 이 실제로 발생 했 을 때 사건 발생 자(사건 원)는 이 사건 을 등록 한 감청 자(감청 기)에 게 메 시 지 를 보 내 감청 자 에 게 어떤 정 보 를 알 리 는 동시에 감청 자 도 사건 대상 을 얻 을 수 있다.이 대상 에 따라 관련 속성 과 관련 작업 을 수행 할 수 있 습 니 다.
모니터 모델 은 다음 과 같은 세 가지 대상 과 관련 되 고 모델 도 는 다음 과 같다.
(1)이벤트:사용자 가 구성 요소 에 대한 조작 이나 프로그램 이 특정한 방법 을 실행 하 는 것 을 하나의 사건 이 라 고 합 니 다.예 를 들 어 로봇 프로그램 이 작업 을 수행 하 는 것 과 같 습 니 다.
(2)사건 원:사건 이 발생 하 는 구성 요 소 는 바로 사건 원,즉 감청 대상 이다.예 를 들 어 로봇 이 일 을 할 수 있 고 춤 을 출 수 있다 면 로봇 을 사건 원 으로 볼 수 있다.
(3)사건 감청 기(프로세서):사건 을 감청 하고 처리 하 는 방법,예 를 들 어 로봇 의 작업 상황 을 감청 하고 로봇 의 작업 전후 에 해당 하 는 동작 을 하거나 로봇 의 상태 정 보 를 얻는다.
실행 순 서 는 다음 과 같 습 니 다.
1.이벤트 소스 에 모니터 를 등록 합 니 다.
2.구성 요소 가 외부 역할 을 받 아들 이 는 것,즉 이벤트 가 촉발 되 는 것 입 니 다.
3.구성 요소 가 해당 하 는 이벤트 대상 을 만 들 고 이 대상 을 관련 된 이벤트 프로세서 에 전달 합 니 다.
4.이벤트 프로세서 가 시작 되 고 관련 코드 를 실행 하여 이 사건 을 처리 합 니 다.
모니터 모드:이벤트 소스 가 모니터 를 등록 한 후에 이벤트 소스 가 사건 을 촉발 하면 모니터 가 사건 대상 을 되 돌 릴 수 있 는 방법;더욱 구체 적 으로 말 하면 감청 자 모델 은 등록-리 셋 된 사건/메시지 알림 처리 모델 을 바탕 으로 피 감시 자가 모든 감시 자 에 게 메 시 지 를 알 리 는 것 이다.
1.등록 모니터:이벤트 원본.setListener.
2.반전:이벤트 소스 구현 onListener.
다음은 모니터 를 모방 한 demo 입 니 다.수요:로봇 작업 과 춤 을 실현 하고 로봇 이 작업 을 시작 하고 춤 을 추기 전에 관련 힌트 를 출력 합 니 다.
우선 이벤트 원본 로봇 을 만 듭 니 다:
package com.ssm.listener.robotListener;
/**
* :
*/
public class Robot {
private RobotListener listener;
/**
*
* @param listener
*/
public void registerListener(RobotListener listener){
this.listener = listener;
}
/**
*
*/
public void working(){
if(listener!=null){
Even even = new Even(this);
this.listener.working(even);
}
System.out.println(" ......");
}
/**
*
*/
public void dancing(){
if(listener!=null){
Even even = new Even(this);
this.listener.dancing(even);
}
System.out.println(" ......");
}
}
생 성 시간 대상 Even:
package com.ssm.listener.robotListener;
/**
*
*/
public class Even {
private Robot robot;
public Even(){
super();
}
public Even(Robot robot){
super();
this.robot = robot;
}
public Robot getRobot() {
return robot;
}
public void setRobot(Robot robot) {
this.robot = robot;
}
}
생 성 시간 모니터 인터페이스 RobotListener:
package com.ssm.listener.robotListener;
/**
*
*/
public interface RobotListener {
public void working(Even even);
public void dancing(Even even);
}
이벤트 모니터 구현 MyRobotListener:
package com.ssm.listener.robotListener;
public class MyRobotListener implements RobotListener{
@Override
public void working(Even even) {
Robot robot = even.getRobot();
System.out.println(" : , !");
}
@Override
public void dancing(Even even) {
Robot robot = even.getRobot();
System.out.println(" : , !");
}
}
이벤트 모니터 테스트 클래스TestListener:
package com.ssm.listener.robotListener;
public class TestListener {
public static void main(String[] args) {
Robot robot = new Robot();
robot.registerListener(new MyRobotListener());
robot.working();
robot.dancing();
}
}
출력 결과:총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.