我刚开始一个新的编码项目。我可能领先于自己,但我已经陷入困境。我想为GUI实现一个抽象工厂,类似于Wikipedia上的示例。然而,各种系统具有用于创建窗口的自己的参数。目前,我已经提出了以下解决方案来解决我的困境:
我的目标是创建统一的高级接口,以便为所有平台创建窗口等是相同的。
我毫不犹豫地做了#5只是因为看起来这应该是一个常见的问题,应该已经有了解决方案。这只是一个玩具,所以它更多的是学习而不是构建实际的应用程序。我知道我可以使用现有的代码库,但这不会实现我的真正目标。
提前致谢。
答案 0 :(得分:0)
我认为,这取决于具体情况。但是如何使用带有构建器(内部工厂)的抽象工厂和带有GUI组件的一些默认值的装饰器,其中decorator将具有来自不同GUI库的类似组件的相同接口,并从GUI库扩展类。
答案 1 :(得分:0)
阅读完之后,我意识到我可以先使用依赖注入来创建具体的工厂。由于入口点知道它正在使用哪种工厂,因此可以传递给客户端。我不敢相信我之前没有看到它,但我认为依赖注射“点击”直到现在。
答案 2 :(得分:0)
我会将系统特定的参数放在每个抽象工厂的构造函数中。
public interface WindowFactory {
public Window build();
}
public class WindowsWindowFactory implements WindowFactory {
private param1, param2, param3;
public WindowsWindowFactory(param1,param2,param3) {} // set params
public Window build() {} // use params
}
public class LinuxWindowFactory implements WindowFactory {
private param1, param2;
public LinuxWindowFactory(param1,param2) {} // set params
public Window build() {} // use params
}