API设计问题

Mar*_*rco 4 .net c# domain-driven-design object-model

在设计我的api时,我正在考虑如何建模以下行为.

选项1似乎更合乎逻辑,但随之而来的是强制执行不变量,例如检查电子表格是否实际属于工作簿.

选项2看起来很奇怪,电子表格知道如何删除自己,但实际上电子表格有一个对其父工作簿的引用,并可以直接将调用委托给他.

或者这真的不是一个有效的案例,因为工作簿需要验证它的电子表格,不管是什么?想法?

Workbook wb = new Workbook("Finances");
Spreadsheet ss = wb.CreateSpreadsheet("Bob's");

// option 1:
wb.RemoveSheet(ss);

// option 2:
ss.RemoveFromWorkbook();
Run Code Online (Sandbox Code Playgroud)

谢谢大家

Mic*_*ter 9

我会使用wb.Sheets.Remove(ss).这允许分离职责,因为Sheets对象是Spreadsheets的集合.这也允许稍后的概念,表单可能在多个工作簿中.