【问题标题】:Logical versus physical design逻辑与物理设计
【发布时间】:2009-08-17 22:15:24
【问题描述】:

我有一个非常笼统的设计问题,但我会用一个例子来具体说明它。

假设您正在为数字打印机开发嵌入式软件。本机有 4 个打印头(C、M、Y、K 各色)。每个打印头都执行相同的任务:取出碳粉并将其放在页面上。

在运行时,我们可以以两种不同的方式组织我们的 API。我们要么遵循逻辑(又称“功能”或“过程”)设计,以便客户端软件可以控制所有打印头的打印过程(例如,一次更改所有颜色的亮度)。或者我们遵循物理设计,以便客户端软件可以单独控制每个打印头(例如仅更改洋红色的亮度)。

这是软件设计中的经典困境:我们要么按活动组织,要么按架构组织。按功能或按形式。我的问题是:是否有任何可靠的标准来选择一个而不是另一个?不同的项目会选择不同的,都可以根据自己的情况选择合适的;所以我不问哪个最好,只问如何选择。例如。我会对您关于松散耦合、可维护性、分层、面向角色的设计、架构设计模式等的想法感兴趣。

【问题讨论】:

    标签: oop architecture


    【解决方案1】:

    编写一个遵循物理设计的接口。最重要的是,您可以对将使用物理接口的逻辑接口进行分层。所以不要选择什么时候可以两者兼得。

    【讨论】:

      【解决方案2】:

      我想这取决于您的客户想要什么 - 从客户的角度来看系统的要求。

      我个人倾向于将问题分解为两个较小的部分/问题:

      访问和控制物理组件的低级代码 - 物理 API。 (这始终需要在您选择的任何设计方案中完成,以便集中精力完成)。

      使用上面的 API 提供更多功能/流程结构化的 API(如果需要)

      HTH 伦

      【讨论】:

        【解决方案3】:

        做最简单的符合项目要求的事情。

        如果逻辑设计满足项目要求,对逻辑设计和物理设计都进行编码可能会引入不必要的开发工作(从而导致成本)。

        【讨论】:

          猜你喜欢
          • 2022-10-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-01
          • 2010-10-05
          相关资源
          最近更新 更多