逻辑与物理设计

Koe*_*mme 2 architecture oop

我有一个非常普遍的设计问题,但我会用一个例子具体地描述它。

假设您正在为数字打印机开发嵌入式软件。机器有 4 个打印头(用于 C、M、Y、K 颜色中的每一种)。每个打印头执行相同的任务:取墨粉并将其放在页面上。

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

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

elj*_*nso 5

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