【发布时间】:2009-08-17 22:15:24
【问题描述】:
我有一个非常笼统的设计问题,但我会用一个例子来具体说明它。
假设您正在为数字打印机开发嵌入式软件。本机有 4 个打印头(C、M、Y、K 各色)。每个打印头都执行相同的任务:取出碳粉并将其放在页面上。
在运行时,我们可以以两种不同的方式组织我们的 API。我们要么遵循逻辑(又称“功能”或“过程”)设计,以便客户端软件可以控制所有打印头的打印过程(例如,一次更改所有颜色的亮度)。或者我们遵循物理设计,以便客户端软件可以单独控制每个打印头(例如仅更改洋红色的亮度)。
这是软件设计中的经典困境:我们要么按活动组织,要么按架构组织。按功能或按形式。我的问题是:是否有任何可靠的标准来选择一个而不是另一个?不同的项目会选择不同的,都可以根据自己的情况选择合适的;所以我不问哪个最好,只问如何选择。例如。我会对您关于松散耦合、可维护性、分层、面向角色的设计、架构设计模式等的想法感兴趣。
【问题讨论】:
标签: oop architecture