管理平台特定功能的关注

问题描述 投票:0回答:1

我想知道如何解决我的担忧。我有一个“foo”和多个条件平台特定的“foo”(例如,winFoo、LinuxFoo 或 AndroidFoo),其中所有特定于平台的“foo”都依赖于基础“foo”。我正在努力决定是否创建一个与平台无关的“foo”并在其中有条件地添加特定于平台的功能。这种方法将提供灵活性,但这意味着如果我包含特定于平台的“foo”,它将不具有基本的“foo”功能,并且尝试添加它可能会导致难看的循环依赖关系。

或者,我正在考虑让特定于平台的“foos”使用基本不可知的“foo”,并在所有需要它们的地方使用“if-else”语句有条件地包含它们。虽然这种方法可能有效,但它并不像我想要的那么灵活,我正在尝试找到一种平衡的解决方案,在提供灵活性的同时保持平滑和优雅的结构。您有什么建议?

architecture cross-platform software-design circular-dependency platform-specific
1个回答
0
投票

我会用以下方式来做:

  1. 为所有平台特定模块创建通用接口。定义所有平台特定模块都应该实现的类和方法。

  2. 在平台特定模块中,按照定义的接口模块实现逻辑。

  3. 为了避免循环依赖,实现

    builder
    模块,其中核心“foo”模块与平台特定模块一起使用,但仅使用接口(您可以使用模板方法作为设计模式)。为了避免 if-else,您可以根据某些参数选择正确的接口实现。

请原谅,如果理解有误,我们可以在评论中一起修改。

© www.soinside.com 2019 - 2024. All rights reserved.