在做一些简单的JDBC的API应用时,就老想只用一个方法向数据库不同的表做插入操作,省得用一大堆的insert语句。访问者模式可以实现对未知的类进行操作,于是就用了这个简化了的模式的实现方案。请高手指正。 在使用访问者模式之前先叙述一点概念性的东西。
静态类型的概念:变量被申明时的类型。实际类型:变量的实际类型。
比如 Object object=new String(); object静态类型是Object,实际类型是String.观察者模式是一个比较难理解的模式,在理解观察者模式之前当然应该先理解双重分派的概念。
java语言支持静态的多分派跟动态的单分派。java通重载支持静态的多分派。书上的例子:
public class Mozi {
public void ride(Horse h){
System.out.println("ridding a horse");
}
public void ride(WhiteHorse w){
System.out.println("ridding a white horse");
}
public void ride(BlackHorse b){
System.out.println("rdding a black horse");
}
public static void main(String[] args){
Mozi mozi=new Mozi();
Horse w=new WhiteHorse();
Horse b=new BlackHorse();
mozi.ride(w);
mozi.ride(b);
}
}程序打印输出:
ridding a horse
ridding a horse
原因就是对两次ride方法的调用传入的参量不同,但是它们的静态类型是一样的,都是 Horse;这个过程在编译时期就完成了。java通过方法置换支持动态分派。比如 String s1="ab"; Object o=s1+"c"; String s="abc";o.equals(s) 打印true o.equals()方法执行的是String类的equals()方法.java调用对象的真实类型的方法,这就是动态分派。
更多内容请看PCdog.com--数据库相关文章专题
