怎么屏蔽实现类,只暴露接口出去
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楼的方法可行