求JAVA框架结构实现思路【100分】

0轰隆隆0 2015-01-08 02:59:29
加精


如图:

entity 包下有4个类,PUB类,A类,B类和C类

还有3个包,分别是a,b,c包

PUB类是entity 包下对外公开访问的类

a,b,c包下面的类完全一样,每个类里面的方法名也完全相同,只有方法里面的实现方式不一样。

A类调用a包下面的类,B类调用b包下面的类,C类调用c包下面的类

现在在PUB类里面通过参数切换A类,B类和C类,实现调用a,b,c包下面的各个方法。

-------------------------------------------------------------------
求实现方式,如何使用extends和implements 求大神指点一二
...全文
3927 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39029359 2017-06-21
  • 打赏
  • 举报
回复
http://www.treejs.cn/v3/main.php#_zTreeInfo
emation3 2015-01-20
  • 打赏
  • 举报
回复
好差的命名风格
yhl1314521 2015-01-20
  • 打赏
  • 举报
回复
蹭分来了 http://bbs.csdn.net/topics/390970501 复制楼上的网址 不知道是啥 看不懂
yhl1314521 2015-01-20
  • 打赏
  • 举报
回复
蹭分来了 http://bbs.csdn.net/topics/390970501 复制楼上的网址 不知道是啥 看不懂
kisskk2010 2015-01-16
  • 打赏
  • 举报
回复
还是挺好的吧!
yufangfang3111 2015-01-16
  • 打赏
  • 举报
回复
你好,我就是看看
程序袁_哈哈 2015-01-14
  • 打赏
  • 举报
回复
在这边回答过了。。。。 又看到了当前的帖子。。。。 蹭分来了 http://bbs.csdn.net/topics/390970501
0轰隆隆0 2015-01-13
  • 打赏
  • 举报
回复
引用 29 楼 wufengui1315 的回复:
[quote=引用 28 楼 fulong258 的回复:] [quote=引用 27 楼 wufengui1315 的回复:] 关键不清楚你的实际需求,可能存在出入
x1,x2,x3...Xn类都是不一样的,里面的方法也是不一样的,所以不可能都实现EntityInterface呀[/quote] 之前不是说一样吗,那么现在加入部分一样,其他的还有一些不一样,那么可以写一个抽象类,就算是实现接口,也可以写自己的方法啊,那么这样在后面调用方法,就不行了,但是方法也是可以通过反射获取的,和之前的是一样的[/quote] 我有重新开了一个帖子 http://bbs.csdn.net/topics/390970501 分数提供到了200分,你看一下,这个帖子可能是我描述的不够准确,或者是理解可能产出了偏差。
wasdasdfqwer 2015-01-13
  • 打赏
  • 举报
回复
引用 28 楼 fulong258 的回复:
[quote=引用 27 楼 wufengui1315 的回复:] 关键不清楚你的实际需求,可能存在出入
x1,x2,x3...Xn类都是不一样的,里面的方法也是不一样的,所以不可能都实现EntityInterface呀[/quote] 之前不是说一样吗,那么现在加入部分一样,其他的还有一些不一样,那么可以写一个抽象类,就算是实现接口,也可以写自己的方法啊,那么这样在后面调用方法,就不行了,但是方法也是可以通过反射获取的,和之前的是一样的
0轰隆隆0 2015-01-13
  • 打赏
  • 举报
回复
引用 27 楼 wufengui1315 的回复:
关键不清楚你的实际需求,可能存在出入
x1,x2,x3...Xn类都是不一样的,里面的方法也是不一样的,所以不可能都实现EntityInterface呀
wasdasdfqwer 2015-01-12
  • 打赏
  • 举报
回复
关键不清楚你的实际需求,可能存在出入
wasdasdfqwer 2015-01-12
  • 打赏
  • 举报
回复
引用 25 楼 fulong258 的回复:
[quote=引用 23 楼 wufengui1315 的回复:]

package entity.a;

import entity.EntityInterface;

public class X1 implements EntityInterface{

   public void doSomething() {
      // TODO Auto-generated method stub
      System.out.println("a --> X1.doSomething...");
   }
   
}

这样的话,再要添加的话只要 添加 相应的类就可以了,其他的不用修改
已经与我的想法很接近了,能不能把 EntityInterface.java 的代码帖一下。 至于建A B C三个类的初衷,1是减小PUB类的大小和负荷,2是隔离abc包,至于如果有更好的方法当然更好了 [/quote]

public interface EntityInterface{
        public void doSomething();
}
0轰隆隆0 2015-01-12
  • 打赏
  • 举报
回复
引用 23 楼 wufengui1315 的回复:

package entity.a;

import entity.EntityInterface;

public class X1 implements EntityInterface{

   public void doSomething() {
      // TODO Auto-generated method stub
      System.out.println("a --> X1.doSomething...");
   }
   
}

这样的话,再要添加的话只要 添加 相应的类就可以了,其他的不用修改
已经与我的想法很接近了,能不能把 EntityInterface.java 的代码帖一下。 至于建A B C三个类的初衷,1是减小PUB类的大小和负荷,2是隔离abc包,至于如果有更好的方法当然更好了
david_yellow 2015-01-12
  • 打赏
  • 举报
回复
通过你提出的问题,我知道了,我写的扩展性不太好。。。。我提供的就是最基本的实现结构。。。 在这个基础上。 只需求稍加变动就可以满足你扩展的需求了。。。也就是你提到的使用反射。 。 将你的反射应用到PUB类的getAbstractEntity()方面就可以了。。。 至于反射的方式, 不管是配置文件也好,还是注解JNDI都可以。。
wasdasdfqwer 2015-01-10
  • 打赏
  • 举报
回复

package entity.a;

import entity.EntityInterface;

public class X1 implements EntityInterface{

   public void doSomething() {
      // TODO Auto-generated method stub
      System.out.println("a --> X1.doSomething...");
   }
   
}

这样的话,再要添加的话只要 添加 相应的类就可以了,其他的不用修改
wasdasdfqwer 2015-01-10
  • 打赏
  • 举报
回复

package entity;

public class PUB {

private String packageCofig = "a";//defalut a 假设此值是从配置文件读取

public EntityInterface start(String entityName) throws Exception{
String classAllName = "entity."+ packageCofig +"." +entityName;
Class cl = Class.forName(classAllName);
Object obj = cl.newInstance();
return (EntityInterface)obj;
}

public static void main(String[] args) throws Exception{
PUB pub = new PUB();
pub.start("X1").doSomething();
pub.start("X2").doSomething();
pub.setPackageCofig("b");//修改配置文件
pub.start("X1").doSomething();
pub.start("X2").doSomething();
/*
a --> X1.doSomething...
a --> X2.doSomething...
b --> X1.doSomething...
b --> X2.doSomething...
*/
}

public String getPackageCofig() {
return packageCofig;
}

public void setPackageCofig(String packageCofig) {
this.packageCofig = packageCofig;
}
}
//觉得A B C三个类没必要写,至少这里是的


冥王之锤 2015-01-10
  • 打赏
  • 举报
回复
工厂方法,根据参数创建A,B,C类,3个类为PUB子类,里面的功能调用a,b, c包实现 PUB factory(string name){ if ("A".equals(name)){ return new A(); }else if("A".equals(name)){ return new B(); }else{ return new C(); } } 使用就是PUB pub= factory("B"); pub.x1(); pub.x2(); 此时调用的就是B的实现,并B是使用的b包中的函数。 如果 PUB pub= factory("A");就变成A了。
q3356564 2015-01-10
  • 打赏
  • 举报
回复
感觉可以把spring的ioc来实现,把类的依赖关系全部写在spring 配置文件里,代码里用接口来声明
0轰隆隆0 2015-01-09
  • 打赏
  • 举报
回复
非常感谢 djy18178 和tarenahuangdw 对本案例的具体分析和帮助 其实,我在解释的过程中,脑子里面已经有了一个初步的想法,但是还是比较模糊,使用反射类应该可以实现,我再想想!
0轰隆隆0 2015-01-09
  • 打赏
  • 举报
回复
引用 15 楼 tarenahuangdw 的回复:
实现包结构如图: 第一个抽象父类.. 所有实体类,A,B,C都集成这个类。如A(B,C 都一样): 核心: 测试:
按你这样处理的话AbstractEntity里面要把 X1、X2、X3...Xn类里面的方法都写一遍,那这样的话这个抽象父类就有点大了, 我想的最理想的调用方式是

PUB  pub = new PUB  
pub.X1.Y(); //调用的时候 把a、b、c包这层隐藏掉
//或者
pub.xxx("X1").Y(); //其中X1就是a、b、c包下的一个类,Y()就是X1的方法
加载更多回复(17)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧