【发布时间】:2013-12-11 19:02:31
【问题描述】:
我只是在编写一个由 3 层(GUI、AppLogic、DatabaseQueries)组成的应用程序。 我希望我的 GUI 仅通过接口与 AppLogic 进行通信(我猜这是常见的做法)。 我希望 AppLogic 中只有一个接口,它定义了 GUI 可以调用的所有方法。 在我的 AppLogic 中,我想要许多类来实现这个接口。 因此,在我的 Controller 类中,我想创建一个实例来实现 GUI 可以用来调用 AppLogic 方法的接口。
public interface AppControllerInterface {
public void m1();
public void m2();
public void m3();
public void m4();
public void m4();
}
public class M1 implements AppControllerInterface{
public void m1(){};
}
public class M2 implements AppControllerInterface{
public void m2(){};
}
...and so on
所以,我想指定尽可能多的类,并只创建一个实例,GUI 控制器可以使用它调用它的方法
AppControllerInterface appCI = new WHATHERE???();
我知道我不能按照我的想法这样做,但也许有人知道如何以某种方式解决这个问题。除此之外,是否有任何理由创建多个接口来与其他层进行通信?
非常感谢您的帮助!
【问题讨论】:
-
您打算做的事情的文本是有道理的,但您的代码示例与您编写的内容不匹配。您的代码示例意味着您希望在 1 个类中实现 1 个方法,在另一个类中实现另一个方法,该类不受 java 支持。似乎您要描述的内容类似于facade pattern
-
Dependency injection. 让一些外部引导程序类决定使用哪个实现,并通过构造函数或设置器将其注入 GUI 类。
-
另外,创建接口的一个重要原因是可测试性。针对接口进行编码可以更轻松地创建模拟实现,而无需使用字节码工程。一般来说,“你可能想换掉实现”有点红鲱鱼,我在实践中从未见过这样做过。 (并不是说它永远不会发生,只是说您可能不会在生命周期足够长的应用程序上工作,以保证完全重新实现数据访问层。)
标签: java interface implementation