我有一个非常笼统的设计问题,但我会用一个例子来具体描述它。
假设您正在为数字打印机开发嵌入式软件。该机器有4个打印头(分别为C,M,Y,K颜色)。每个打印头执行相同的任务:取出碳粉并将其放在页面上。
在运行时,我们可以用两种不同的方式组织我们的API。我们遵循逻辑(又称“功能”或“过程”)设计,以便客户端软件可以控制所有打印头的打印过程(例如,一次改变所有颜色的亮度)。或者我们遵循物理设计,以便客户端软件可以单独控制每个打印头(例如,仅更改品红色的亮度)。
这是软件设计中的经典困境:我们要么按活动要么按照建筑来组织。按功能或形式。我的问题是:选择其中一个是否有任何可靠的标准?不同的项目会有不同的选择,并且可以根据自己的情况做出正确的选择;所以我不是问哪个是最好的,只是如何选择。例如。我会对你关于松散耦合,可维护性,分层,面向角色的设计,架构设计模式等的想法感兴趣。
答案 0 :(得分:4)
编写符合物理设计的界面。最重要的是,您可以对将使用物理接口的逻辑接口进行分层。因此,不要选择什么时候可以同时拥有它们。
答案 1 :(得分:0)
我想这取决于您的客户想要什么 - 从客户的角度来看系统的要求。
就个人而言,我赞成将问题分解为两个较小的部分/问题:
访问和控制物理组件的低级代码 - 物理API。 (这将始终需要在您选择的任何设计方案中完成,以便可以集中精力完成)。
使用上面的API提供更多功能/流程结构化API(如果需要)
HTH 莱恩
答案 2 :(得分:0)
做最符合项目要求的事情。
如果逻辑设计满足项目的要求,编码逻辑和物理设计可能会引入不必要的开发工作(因此也会产生成本)。