【文件属性】:
文件名称:名词解释-vue不通过路由直接获取url中参数的方法示例
文件大小:1.31MB
文件格式:PDF
更新时间:2021-06-07 18:30:46
java 设计模式 单例模式 工厂模式
这篇文章,完全是为了更好的讲解访问者(Visitor)模式而写的。让我们进入这扑朔迷离
的分派世界吧(是不是有点夸张了,汗)。
二、名词解释
先来解释下分派的意思吧。。
在 OO(object-oriented)语言中使用了继承来描述不同的类之间的“社会关系”——类型
层次。而这些类实例化的对象们则是对这个类型层次的体现。因此大部分 OO 语言的对象都
存在两个身份证:静态类型和实际类型。所谓静态类型,就是对象被声明时的类型;而实际
类型则便是创建对象时的类型。举个例子:
B 是 A 的子类。则
A object1 = new B ( );
中 object1 的静态类型便是 A,而实际类型却是 B。在 Java 语言中,编译器会根据对象的静
态类型来检查错误;而在运行时,则使用对象的真实身份。
OO 还有一个重要的特点:一个类中可以存在两个相同名称的方法,而它们是根据参数
类型的不同来区分的。
正因以上两个原因,便产生了分派——根据类型的不同来选择不同的方法的过程——OO
语言的重要特性。
三、分类
分派可以发生在编译期或者是运行期。因此按此标准,分派分为静态分派和动态分派。
在程序的编译期,只有对象的静态类型是有效的,因此静态分派就是根据对象(包括参
数对象)的静态类型来选择方法的。 典型的便是方法重载(overloading)。
在运行期,动态分派会根据对象的实际类型来选择方法。典型的例子便是方法重置
(overriding)
而 OO 语言正是由以上两种分派方式来提供多态特性的。
按照选择方法时所参照的类型的个数,分派分为单分派和多分派。OO 语言也因此分为
了单分派(Uni-dispatch)语言和多分派(Multi-dispatch)语言。比如 Smalltalk 就是单分
派语言,而 CLOS 和 Cecil 就是多分派语言。
说道多分派,就不得提到另一个概念:多重分派(multiple dispatch)。它指由多个单分
派组成的分派过程(而多分派则往往不能分割的)。因此单分派语言可以通过多重分派的方
式来实现和多分派语言一样的效果。
那么我们熟悉的 Java 语言属于哪一种分派呢?
四、Java 分派实践
先来看看在 Java 中 常见的特性:重载(overloading)与重置(overriding)。
下面是重载的一个具体的小例子,这是一个再简单不过的代码了:
//Test For OverLoading
public class Test{
public void doSomething(int i){
System.out.println("doString int = "+ i );
}