首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

一个很高深的有关问题

2013-12-19 
一个很高深的问题有两套协议包,一套叫1.0,另一套叫2.01和2的区别,最明显的区别是分成了不同的包了,比如说

一个很高深的问题
有两套协议包,一套叫1.0,另一套叫2.0

1和2的区别,最明显的区别是分成了不同的包了,比如说 Test类,1.0在 com.common下面,但是2.0在com.common.test下面。相当于有一些类放到了不同的包里面。


写一个程序

public class TestDemo{

    public void test(){
      Test t = new Test();

    }


}

能够根据使用的协议版本来引用不同版本的Test类吗?

Java没有C一样的引用不同的头文件的概念,各位有没有好的办法。

目前能想到的就是,建一个代理类,程序里面实际使用的是这个代理类,代理类可以根据协议版本来反射出来同版本的实际类,并代理里面的所有方法。这样写起来会比较麻烦。 这种情况只能用反射了
[解决办法]
有点奇怪 你的test类在2套包里面的路径不一样 不能区分么
[解决办法]
还有你为什么搞2套包 取同一个名字这么蛋疼 用抽象试试呢
[解决办法]
对了,加完全限定名行不行?com.common.test.Test t = new com.common.test.Test();
一个很高深的有关问题
[解决办法]



不是这个意思了,呵呵!是为了方便一套东西引用不同的两套协议,能够兼容。
相当于引用1.0的时候用第一个包下的类,2.0下用第二个包下的类,你这样的话就限定死了。
那就用反射了,不用动态代理了,代码太多
[解决办法]

if (协议1) {
Test t = new Test1();
} else 
if (协议2) {
Test t = new Test2();
{

[解决办法]
if (协议1) {
Test t = new  com.common.Test();
} else 
if (协议2) {
Test t = new com.common.test.Test();
{
[解决办法]
引用:
Quote: 引用:

还有你为什么搞2套包 取同一个名字这么蛋疼 用抽象试试呢


这个的话,我只是打一个比方,因为升级2.0把以前的东西都做了重新改进了,有些类就放到更适合的包里面去了。


方法名一样如何?2个test在一个类下都可以,方法重新就可以了。
[解决办法]
方法重写
[解决办法]
如果包名不一样的话就用委托模式的方案.
[解决办法]
引用:
Quote: 引用:

if (协议1) {
Test t = new  com.common.Test();
} else 
if (协议2) {
Test t = new com.common.test.Test();
{


这样的话,每个用到的地方都要判断。。而且会有N多if else的,嘿嘿。我只是举了个例子,其实引用的地方还是挺多的。


使用工厂 + 状态模式就好了啊。 

热点排行