日期:2014-05-20  浏览次数:20716 次

怎么屏蔽实现类,只暴露接口出去

public class A implements B,C{
 public A(){
 }
 public void funB()
 {
 }
 public void funC()
 {
 }
}


public interface B{
 public void funB();
}


public interface C{
 public void funC();
}
public Factory
{
  public staic B getBInstance()
  {
     return new A();
  }
  ......
}


我如果只想给外面接口B或者C,但是B,C的实现对象都需要new A()来做,通过Factory类,来return 对应的接口对象,如果A不设置成public 那么B,C的实现对象都生成不了,但是如果设置成public 那么,直接生成A a = new A();这样B,C的方法又可以同时使用了,用接口的意义就没有了。


我该怎么做才能只暴露接口出去,把实现类屏蔽,让用户无法调用。

------最佳解决方案--------------------
类A和Factory放到同一个包里,另外,把class A的public删除。
------其他解决方案--------------------
貌似用内部类可以解决你的问题
------其他解决方案--------------------
把A做为内部类,放到Factory的类里面。这样当外部通过Factory初始化类B或C时,就可以返回一个内部类A的对象了。 
------其他解决方案--------------------
谢谢各位,2楼的方法可行