자바 인터페이스 리 셋 메커니즘 을 깊이 이해 하 다.

머리말
최근 안 드 로 이 드 프 래 그 먼 트 와 Activity 가 데 이 터 를 전달 하 는 부분 을 보고 인터페이스 리 셋 내용 을 봤 습 니 다.오늘 정리 해 보 겠 습 니 다.
2.반전 의 의미 와 용도
1.무엇이 반전 입 니까?
일반적으로 모듈 간 에 일정한 호출 관계 가 존재 하 는데 호출 방식 을 보면 세 가지 동기 호출,비동기 호출 과 반전 으로 나 눌 수 있다.동기 호출 은 함수 A 의 함수 체 에서 함수 B 의 함수 이름 을 써 서 메모리 에 대응 하 는 함수 B 의 코드 를 실행 할 수 있 도록 하 는 차단 식 호출 이다.비동기 호출 은 유사 한 메시지 나 사건 의 메커니즘 으로 동기 화 차단 문 제 를 해결 했다.예 를 들 어 A 가 B 에 게 알 린 후에 그들 은 각자 의 길 을 가 고 서로 영향 을 주지 않 으 며 동기 화 호출 처럼 A 가 B 에 게 알 린 후에 B 가 다 간 후에 야 A 는 계속 갈 수 있다.리 셋 은 양 방향 호출 모드 이다.즉,호출 된 인터페이스 가 호출 될 때 도 상대방 의 인 터 페 이 스 를 호출 하 는 것 이다.예 를 들 어 A 는 B 를 호출 하고 B 는 실행 이 끝나 면 A 를 호출 해 야 한다.
2.리 턴 의 용도
리 셋 은 보통 층 간 협력 에 사용 되 고 상층 부 는 이 층 함 수 를 하층부 에 설치 합 니 다.이 함 수 는 리 셋 입 니 다.하층부 는 일정한 조건 에서 리 셋 을 촉발 합 니 다.예 를 들 어 하나의 구동 으로서 밑바닥 이다.그 는 데 이 터 를 받 을 때 본 층 의 처리 업 무 를 완성 하 는 동시에 이 데 이 터 를 상부 응용 층 에 맡 겨 진일보 한 처 리 를 할 것 이다.이것 은 층 을 나 누 는 데이터 통신 에서 매우 보편적이다.
3.자바 인터페이스 리 셋 실현
C/C++에서 리 셋 함 수 를 실현 하려 면 호출 된 함 수 는 호출 자 에 게 자신의 포인터 주 소 를 알려 야 합 니 다.그러나 자바 는 포인터 주소 가 없어 서 방법 을 전달 할 수 없 는 주 소 를 사용 합 니 다.일반적으로 인터페이스 리 셋 방법 으로 이 루어 집 니 다.특정한 인 터 페 이 스 를 실현 하 는 클래스 가 만 든 대상 의 인용 을 이 인터페이스 성명 의 인터페이스 변 수 를 부여 하면 이 인터페이스 변 수 는 호출 된 클래스 가 실현 하 는 인터페이스 방법 을 호출 할 수 있 습 니 다.
원리:먼저 리 셋 대상 을 만 든 다음 에 컨트롤 러 대상 을 만 들 고 리 셋 대상 이 호출 되 어야 하 는 방법 을 컨트롤 러 대상 에 게 알려 줍 니 다.컨트롤 러 대상 은 특정한 장면 이 나타 나 거나 특정한 조건 이 만족 하 는 지 확인 하고 만족 할 때 자동 으로 리 셋 대상 을 호출 하 는 방법 을 검사 합 니 다.
예 를 들 어 사장 A 가 직원 B 에 게 내 가 지금 너 에 게 임 무 를 맡 기 고 내 전화 번 호 를 너 에 게 줄 테 니 너 는 임 무 를 완성 하면 나 에 게 전화 해라.
자세 한 코드 는 다음 과 같 습 니 다.
1.리 셋 인터페이스 만 들 기

public interface CallBack
{
public void doEvent();
}
2.리 셋 인 터 페 이 스 를 만 드 는 실현 류 는 직원 이 일 을 한 후에 또 무슨 일 을 해 야 하 는 지 사장 이 결정 한 것 이다.

public class Boss implements CallBack
{
public void doEvent()
{
System.out.println("      ,         ");
}
}
3.통제 류,즉 본 사례 의 직원 대상 을 만 들 고 그 는 사장 의 주소(즉,리 셋 인터페이스)를 가 져 야 한다.

public class Employee
{
CallBack callBack;
public Employee(CallBack callBack)
{
this.callBack=callBack;
}
public void doWork()
{
System.out.println("     ....");
callBack.doEvent();
}
}
4.테스트 클래스

public class TestMain
{
public static void main(String[] args)
{
//       ,            
Employee employee=new Employee(new Boss());
//         
employee.doWork();
}
}
실행 결과 캡 처:

4.Android 의 인터페이스 리 셋
안 드 로 이 드 에서 리 셋 메커니즘 이 대량으로 사용 되 고 있 습 니 다.예 를 들 어 Activity 에서 많은 생명 주기의 서로 다른 상태 에서 호출 할 방법 을 정 의 했 는데 이런 방법 은 모두 빈 실현 이 고 시스템 프레임 워 크 가 호출 되 어야 하 며 사용자 도 호출 하여 실현 해 야 한다.
간단 한 예 를 들 어 Button 의 클릭 응답 이벤트 실현 메커니즘 입 니 다.

button.setOnClickListener(new OnClickListener() 
{
@Override
public void onClick(View v) 
{
}
});
OnClickListener 는 안 드 로 이 드 시스템 이 약속 한 인터페이스 입 니 다.그리고 우리 가 쓴 응용 프로그램 에 리 셋 대상 을 입력 하면 인터페이스 가 통일 되 고 서로 다른 효 과 를 실현 할 수 있 습 니 다.이러한 실현 체 제 는 아래 의 코드 와 유사 하 다.

public class A
{
public void setOnClickListener(OnClickListener onClickListener)
{
onClickListener.onClick();
}
public interface OnClickListener
{
public void onClick();
}
}
public class B 
{
public static void main(String[] args)
{
A a=new A();
a.setOnClickListener(new OnClickListener()
{
public void onClick()
{
// TODO          
}
});
}
}
그 중에서 A 는 Button,a 즉 button 단추,B 류 는 View 에 해당 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기