先看看java中的回调函数,java中很多模式和它类似,有访问者,观察者等模式。ioc等也有这个类似的원리.
자바代码
공개 클래스 테스트 {
/**
* @param 인수
*/
공개 정적 무효 메인(String[] args) {
// TODO 자동 생성된 메서드 스텁
새로운 Test().doExecute(새로운 콜백(){
공개 무효 실행() {
System.out.println("정재행....");
}
});
}
개인 무효 doExecute(콜백 콜백) {
System.out.println("지금까지.....");
callBack.execute();
System.out.println("回调后.....");
}
}
공개 클래스 테스트 {
/**
* @param 인수
*/
공개 정적 무효 메인(String[] args) {
// TODO 자동 생성된 메서드 스텁
new Test().doExecute(new CallBack(){
공개 무효 실행() {
System.out.println("정재행....");
}
});
}
private void doExecute(CallBack callBack) {
System.out.println("回调前.....");
callBack.execute();
System.out.println("回调后.....");
}
}
자바代码
回调前.....
정재행....
回调后.....
回调前.....
정재행....
回调后.....这里充分的体现了不是我来调用你,而是你来调用我。
这里的我就是“doExecute”, 你就是“execute”
回调可以사용이 哪些地方呢에 있습니까?
1, 比如著는 ioc의 유명한 사건에 대해 생각하고 있습니다.管他们,变的只是要执行방법은 서로 다르며, 删除, 查询什么的입니다.
2, 一以减少写类, 一个接口, 더 많은 정보가 있습니다.
자바代码
인터페이스 DatabaseObjectFactory {
/**
* id와 연관된 객체를 반환하거나,
* 개체를 로드할 수 없습니다.
*
* @param id 로드할 객체의 ID입니다.
* @id로 지정된 객체를 반환하거나, 그렇지 않은 경우 null을 반환합니다.
*로드됩니다.
*/
공용 개체 loadObject(긴 ID);
}
인터페이스 DatabaseObjectFactory {
/**
* id와 연관된 객체를 반환하거나,
* 개체를 로드할 수 없습니다.
*
* @param id 로드할 객체의 ID입니다.
* @id로 지정된 객체를 반환하거나, 그렇지 않은 경우 null을 반환합니다.
*로드됩니다.
*/
공용 개체 loadObject(긴 ID);
}
외부 인터페이스에 사용되는 ID는 동일하지 않습니다.
현재 자바스크립트 페이지는 다음과 같습니다.
Js代码
함수 테스트()
{
var 자기=이것;
this.func1=함수()
{
self.test2(함수 (){ 경고('정재执行');})
}
}
Test.prototype.test2=함수(func)
{
Alert("回调前做些东西");
만약(기능)
기능();
Alert("回调后做些东西");
}
함수 테스트()
{
var 자기=이것;
this.func1=함수()
{
self.test2(함수 (){ 경고('정재执行');})
}
}
Test.prototype.test2=함수(func)
{
Alert("回调前做些东西");
만약(기능)
기능();
Alert("回调后做些东西");
}
然后,여기 HTML지역:
Html代码
<html>
<머리>
<스크립트 유형=text/javascript src="1.js">
</script>
<스크립트>
새로운 테스트().func1();
</script>
</head>
<본문>
</body>
</html>
<html>
<머리>
<스크립트 유형=text/javascript src="1.js">
</script>
<스크립트>
새로운 테스트().func1();
</script>
</head>
<본문>
</body>
</html>
java와 javascript는 더 이상 사용할 수 없습니다
.