我想知道如何解决我的担忧。我有一个“foo”和多个条件平台特定的“foo”(例如,winFoo、LinuxFoo 或 AndroidFoo),其中所有特定于平台的“foo”都依赖于基础“foo”。我正在努力决定是否创建一个与平台无关的“foo”并在其中有条件地添加特定于平台的功能。这种方法将提供灵活性,但这意味着如果我包含特定于平台的“foo”,它将不具有基本的“foo”功能,并且尝试添加它可能会导致难看的循环依赖关系。
或者,我正在考虑让特定于平台的“foos”使用基本不可知的“foo”,并在所有需要它们的地方使用“if-else”语句有条件地包含它们。虽然这种方法可能有效,但它并不像我想要的那么灵活,我正在尝试找到一种平衡的解决方案,在提供灵活性的同时保持平滑和优雅的结构。您有什么建议?
我会用以下方式来做:
为所有平台特定模块创建通用接口。定义所有平台特定模块都应该实现的类和方法。
在平台特定模块中,按照定义的接口模块实现逻辑。
为了避免循环依赖,实现
builder
模块,其中核心“foo”模块与平台特定模块一起使用,但仅使用接口(您可以使用模板方法作为设计模式)。为了避免 if-else,您可以根据某些参数选择正确的接口实现。
请原谅,如果理解有误,我们可以在评论中一起修改。