当前位置: 代码迷 >> J2EE >> 求JAVA框架结构实现思路【100分】,该如何解决
  详细解决方案

求JAVA框架结构实现思路【100分】,该如何解决

热度:40   发布时间:2016-04-17 23:16:19.0
求JAVA框架结构实现思路【100分】


如图:

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  求大神指点一二
------解决思路----------------------


对应你所谓的pub
public class Car {

public static void main(String[] args) {
run("benz2");
run("bmw2");
run("audi2");
}

public static void run(String car) {
if ("benz".equals(car)) {
Benz benz = new BenzImpl();
benz.run();
} else if ("benz2".equals(car)) {
Benz benz = new Benz2Impl();
benz.run();
} else if ("bmw".equals(car)) {
Bmw bmw = new BmwImpl();
bmw.run();
} else if ("bmw2".equals(car)) {
Bmw bmw = new Bmw2Impl();
bmw.run();
} else if ("audi".equals(car)) {
Audi audi = new AudiImpl();
audi.run();
} else if ("audi2".equals(car)) {
Audi audi = new Audi2Impl();
audi.run();
}
}
}


------解决思路----------------------

对应你的A:
public interface Audi {
public void run();
}
对应你的A包下的类
public class AudiImpl implements Audi {

@Override
public void run() {
System.out.println("audi开起来啦!");
}

}

public class Audi2Impl implements Audi {

@Override
public void run() {
System.out.println("audi2开起来啦!");
}

}

------解决思路----------------------
实现包结构如图:


第一个抽象父类..

所有实体类,A,B,C都集成这个类。如A(B,C 都一样):


核心:

测试:

------解决思路----------------------

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三个类没必要写,至少这里是的



------解决思路----------------------

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...");
   }
   
}


这样的话,再要添加的话只要 添加 相应的类就可以了,其他的不用修改
  相关解决方案