先看看java中的回调函数,java中很多模式和它类似,有访问者,观察者等模式。ioc等也有这个类似的原理。
Java代码
การทดสอบชั้นเรียนสาธารณะ {
-
* @param args
-
โมฆะคงที่สาธารณะ main (String [] args) {
// TODO ต้นขั้ววิธีการสร้างอัตโนมัติ
การทดสอบใหม่ (). doExecute (การโทรกลับใหม่ () {
โมฆะสาธารณะดำเนินการ () {
System.out.println("正在执行....");
-
-
-
โมฆะส่วนตัว doExecute (โทรกลับโทรกลับ) {
System.out.println("回调前.....");
callBack.execute();
System.out.println("回调后.....");
-
}
ทดสอบชั้นเรียนสาธารณะ {
/**
* @param args
-
โมฆะคงที่สาธารณะ main (String [] args) {
// TODO ต้นขั้ววิธีการสร้างอัตโนมัติ
การทดสอบใหม่ (). doExecute (การโทรกลับใหม่ () {
การดำเนินการโมฆะสาธารณะ () {
System.out.println("正在执行....");
-
-
} }
โมฆะส่วนตัว doExecute(CallBack callBack) {
System.out.println("回调前.....");
callBack.execute();
System.out.println("回调后.....");
}
} 输出结果为:
Java代码
回调前.....
正在执行....
回调后.....
回调前.....
正在执行....
回调后.....这里充分的体现不是我来调用คุณ,而是我来调用我。
这里的我就是“doExecute”,你就是"execute"
回调可以用在哪些地方呢?
1,比如著名的ioc的事务处理就是这样的,每个方法的事务处理都是一样的,都是些都一个事务,用try包住,等等,所以就可以不管他们,变的只是要执行方法的不同,比如存储,删除,查询什么的。
2,可以减少写类,一个接口,可以有很多的实现类,在回调里的,就成了匿名的了。著名的jive里เลดี้DatabaseObjectFactory 就是这个用法.
Java代码
อินเทอร์เฟซ DatabaseObjectFactory {
-
* ส่งกลับวัตถุที่เกี่ยวข้องกับ id หรือ null ถ้า
* ไม่สามารถโหลดวัตถุได้
-
* @param id คือ id ของวัตถุที่จะโหลด
* @ส่งคืนวัตถุที่ระบุด้วย id หรือ null หากไม่สามารถทำได้
* ได้รับการโหลด
-
วัตถุสาธารณะ loadObject (รหัสยาว);
}
อินเตอร์เฟส DatabaseObjectFactory {
-
* ส่งกลับวัตถุที่เกี่ยวข้องกับ id หรือ null ถ้า
* ไม่สามารถโหลดวัตถุได้
-
* @param id คือ id ของวัตถุที่จะโหลด
* @ส่งคืนวัตถุที่ระบุด้วย id หรือ null หากไม่สามารถทำได้
* ได้รับการโหลด
-
วัตถุสาธารณะ loadObject (รหัสยาว);
-
外的调用的根据id不同产生任何คุณ想要的对象。
在看看javascript里的的:
เจส代码
ทดสอบฟังก์ชัน()
-
var self = นี่;
this.func1=ฟังก์ชั่น()
-
self.test2(function (){ alert('正在执行');})
-
-
Test.prototype.test2=ฟังก์ชั่น(ฟังก์ชั่น)
-
alert("回调前做些东西");
ถ้า(ฟังก์ชั่น)
ฟังก์ชั่น();
alert("回调后做些东西");
}
ทดสอบฟังก์ชัน()
-
var self = นี่;
this.func1=ฟังก์ชั่น()
-
self.test2(function (){ alert('正在执行');})
-
}
Test.prototype.test2=ฟังก์ชั่น (ฟังก์ชั่น)
-
alert("回调前做些东西");
ถ้า(ฟังก์ชั่น)
ฟังก์ชั่น();
alert("回调后做些东西");
-
然后,在html里的:
Html代码
<html>
<หัว>
<script type=text/javascript src="1.js">
</สคริปต์>
<สคริปต์>
การทดสอบใหม่().func1();
</สคริปต์>
</หัว>
<ร่างกาย>
</ร่างกาย>
</html>
<html>
<หัว>
<script type=text/javascript src="1.js">
</สคริปต์>
<สคริปต์>
การทดสอบใหม่().func1();
</สคริปต์>
</หัว>
<ร่างกาย>
</ร่างกาย>
</html>
javaและjavascript的回调都差不多。
声明:JavaEye文章版权属作者,受法律保护。没有作者书的许可不得转载。