先看看java中的回调函数,java中很多模式和它类似,有访问者,观察者等模式.ioc等也有这个类似的原理。
Java代码
öffentlicher Klassentest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Automatisch generierter Methoden-Stub
new Test().doExecute(new CallBack(){
public voidexecute() {
System.out.println("Weitere Informationen....");
}
});
}
private void doExecute(CallBack callBack) {
System.out.println("Weitere Informationen.....");
callBack.execute();
System.out.println("Weitere Informationen...");
}
}
öffentlicher Klassentest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Automatisch generierter Methoden-Stub
new Test().doExecute(new CallBack(){
public voidexecute() {
System.out.println("Weitere Informationen....");
}
});
}
private void doExecute(CallBack callBack) {
System.out.println("回调前.....");
callBack.execute();
System.out.println("Weitere Informationen...");
}
} 输出结果为:
Java代码
回调前....
正在执行....
回调后......
回调前...
正在执行....
回调后
....
回调可以用在哪些地方呢?
1,比如著名的ioc的事务处理就是这样的, Probieren Sie es aus方法的不同, 比如存储, 删除, 查询什么的.
2. Sie haben die Möglichkeit, eine Datenbank zu erstellen Factory 就是这个用法.
Java代码
Schnittstelle DatabaseObjectFactory {
/**
* Gibt das mit der ID verknüpfte Objekt oder null zurück, wenn das
* Objekt konnte nicht geladen werden.
*
* @param id die ID des zu ladenden Objekts.
* @return das durch id angegebene Objekt oder null, wenn dies nicht möglich ist
* geladen werden.
*/
öffentliches Objekt loadObject(long id);
}
Schnittstelle DatabaseObjectFactory {
/**
* Gibt das mit der ID verknüpfte Objekt oder null zurück, wenn das
* Objekt konnte nicht geladen werden.
*
* @param id die ID des zu ladenden Objekts.
* @return das durch id angegebene Objekt oder null, wenn dies nicht möglich ist
* geladen werden.
*/
öffentliches Objekt loadObject(long id);
}
外面调用的根据id不同产生任何你想要的对象.
在看看javascript里面的:
Js代码
Funktion Test()
{
var self=this;
this.func1=function()
{
self.test2(function (){ alarm('正在执行');})
}
}
Test.prototype.test2=function(func)
{
Alert("回调前做些东西");
if(func)
func();
Alert("回调后做些东西");
}
Funktion Test()
{
var self=this;
this.func1=function()
{
self.test2(function (){ alarm('正在执行');})
}
}
Test.prototype.test2=function(func)
{
Alert("回调前做些东西");
if(func)
func();
Alert("回调后做些东西");
}
然后, 在html里面:
Html代码
<html>
<Kopf>
<script type=text/javascript src="1.js">
</script>
<Skript>
neuer Test().func1();
</script>
</head>
<Körper>
</body>
</html>
<html>
<Kopf>
<script type=text/javascript src="1.js">
</script>
<Skript>
neuer Test().func1();
</script>
</head>
<Körper>
</body>
</html>
Java
und Javascript.