第一,当具体工厂类产生一个类时,首先要对该类进行装载,任何java程序都要运行在java虚拟机上,当二进制的类型数据被导入到java虚拟机中时,虚拟机将会进行验证、准备和解析及初始化各项工作。装载是把二进制形成的java类型读入java虚拟机、验证、准备和解析统称。其中验证是确认类型符合java语言的语义,并且它不会危及虚拟机的完整性。准备是java虚拟机为类变量分配的内存。设置默认初始值,但在到达初始化阶段之前,类变量都没有初始化为真正的初始值,解析是在类型的变量池中寻找类,接口,字段和方法的符号引用。把这些符号引用替换成直接引用的过程。为了准备让一个类或者接口被首次主动使用。最后一个步骤就初始化,也就是为类变量赋予程序员希望这个类变量所具备的初始值。可以说,到此为止,这一步,具体工厂类产生的类已经彻底转变成java虚拟机上的一分子,它的所有方法,属性等都已经成为了一个不可分割的整体第二,当开始运行时,每个java程序都有自己的堆空间,它们不会彼此干扰。对于堆的存在,这是由虚拟机自行决定,在这里会出现以下问题:如果系统关闭或重起,那么实例就会消失,所以在这里,对于经常需要的,可将一部分实例放在一个缓冲池里,根据队列来决定调用次序,对于不经常需要的,可将另一部分实例通过用户类自定义加载器加载,在容器加载前应将二进制的类型数据分类保存在一个“地方”,以后用户类自定义加载器根据相关列表加载保存的二进制的类型数据,这样可以保证关系不被破坏,又可确保效率,我在这里借鉴了Java在动态扩展上的思想;第三,当一个程序如果发生变化时,在同一个类中,与它协作的类将不断地变化,但是,回到“第一这个大问题”,我们可以看到,它们都已经彻底转变成java虚拟机上的一分子,不存在着A类实例原先需要B类实例协调,B类实例需要C类实例协调,现在B类实例由C类实例协调了,程序因为找不到原有关系而不能运行的情况,也就是说,只要需要的实例都存在,就不会发生以上问题;第四,一个类可以产生多个对象,每一个对象只调用与它相关的模块,一个对象对应一个地址。不同线程执行同一个方法时,会把同一个对象解析成该线程对象的实例变量。
解决方案 »
- 如何用java读取一个txt 文件内的内容并把它赋值与String里?
- JOptionPane.showMessageDialog(this,"You input number is Wrong!!!(0~100)","Error",JOptionPane.ERROR_MESSAGE);问题
- 一个javascript的小问题??
- js和yui高手进
- 向大家请教一个关于Java开发工具的问题?
- JOptionPane问题??
- 求一个根据日期查询股票数据接口
- 有JAVA电子书籍的请给我发一本好吗?
- 请看下边代码?
- 找不到?~~~~~```
- 讨论一个问题:怎样避免一个类在不断地变化中对它相关联的类产生不利影响
- 一道for循环题的疑问??
你是给大家普及知识呢还是提问呢?
针对你的题目, 我觉得bridge模式应该可以解决你的问题吧。
另外, 要针对接口做设计, 这样能好点。