woman

14.访问者模式

不打扰是莪最后的温柔 提交于 2019-11-28 04:44:51
访问者模式 一、应用实例 将观众分为男和女,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(成功、失败等) 二、访问者模式 1.基本介绍 1)封装一些作用于某种数据结构的各元素操作,在不改变数据结构的前提下定义作用于这些元素的新的操作。 2)将数据结构与数据操作分离,解决 数据结构和操作耦合性问题 3)基本工作原理:在被访问的类里面增加一个对外提供接待访问者的接口 2.原理类图 1)Visitor是抽象访问者,为该对象结构中的ConcreteElement的每一个类声明一个visit操作 2)ConcreteVisitor:是一个具体的访问者实现每个有Visitor声明的操作,是每个操作实现的部分. 3)ObjectStructure 能枚举它的元素,可以提供一个高层的接口,用来允许访问者访问元素 4)Element 定义一个accept方法,接收一个访问者对象 5)ConcreteElement 为具体元素,实现了accept 方法 三、访问者应用实例 1.思路分析 2.代码实现 /** * 抽象访问者 */ public abstract class Action { //得到男性 的测评 public abstract void getManResult(Man man); //得到女的 测评 public abstract void

《深入理解Java虚拟机》- 重载与重写

左心房为你撑大大i 提交于 2019-11-28 01:39:48
这一节打算从“方法调用”的主题进行分析。 方法调用并不等同于方法执行,方法调用阶段唯一的任务就是 确定被调用方法的版本(即调用哪一个方法),暂时还不设计方法内部的具体运行过程。 一、概念 解析调用:所有方法调用中的目标方法在Class文件里都是一个常量池中的引用,在类加载的解析阶段,会将其中一部分符号引用转化为直接引用。也就是说, 调用目标在程序代码写好、编译器进行编译时就必须能确定下来的方法调用成为解析 。 小插曲:这里提供5条方法调用字节码指令 invokestatic:调用静态方法 invokespecial:调用实例构造器<init>方法、私有方法和父类方法 invokevirtual:调用所有的虚方法 invokeinterface:调用接口方法,会在运行时再确定一个实现此接口的对象 invokedynamic:先在运行时动态解析出调用点限定符所引用的方法,然后再执行该方法,在此之前的4条调用指令,分派逻辑是固化在Java虚拟机内部的,而invokedynamic指令的分派逻辑是由用户所设定的引导方法决定的。 只要能被invokestatic 和invokespecial指令调用的方法,都可以在解析阶段中确定唯一的调用版本,符合这个条件的有 静态方法、私有方法、实例构造器、父类方法 4类,他们在类加载的时候就会把符号引用解析为该方法的直接引用,这些方法也可以成为非虚方法

Java基础08 继承

落花浮王杯 提交于 2019-11-26 22:39:29
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 继承(inheritance) 是面向对象的重要概念。继承是除 组合(composition) 之外,提高代码 重复可用性(reusibility) 的另一种重要方式。我们在 组合(composition) 中看到,组合是重复调用 对象的功能接口 。我们将看到,继承可以重复利用已有的 类的定义 。 类的继承 我们之前定义类的时候,都是从头开始,详细的定义该类的每一个成员。比如下面的Human类: class Human { /** * accessor */ public int getHeight() { return this.height; } /** * mutator */ public void growHeight(int h) { this.height = this.height + h; } /** * breath */ public void breath() { System.out.println("hu...hu..."); } private int height; } 从上面的类定义,我们可以了解该类的所有细节: 该类的数据成员,该类的方法,该类的接口。 现在要定义一个新的类,比如Woman类,并假设Woman与Human类相当类似

14.访问者模式

我的未来我决定 提交于 2019-11-26 22:07:47
访问者模式 一、应用实例 将观众分为男和女,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(成功、失败等) 二、访问者模式 1.基本介绍 1)封装一些作用于某种数据结构的各元素操作,在不改变数据结构的前提下定义作用于这些元素的新的操作。 2)将数据结构与数据操作分离,解决 数据结构和操作耦合性问题 3)基本工作原理:在被访问的类里面增加一个对外提供接待访问者的接口 2.原理类图 1)Visitor是抽象访问者,为该对象结构中的ConcreteElement的每一个类声明一个visit操作 2)ConcreteVisitor:是一个具体的访问者实现每个有Visitor声明的操作,是每个操作实现的部分. 3)ObjectStructure 能枚举它的元素,可以提供一个高层的接口,用来允许访问者访问元素 4)Element 定义一个accept方法,接收一个访问者对象 5)ConcreteElement 为具体元素,实现了accept 方法 三、访问者应用实例 1.思路分析 2.代码实现 /** * 抽象访问者 */ public abstract class Action { //得到男性 的测评 public abstract void getManResult(Man man); //得到女的 测评 public abstract void