我有以下情况(代码是python,但这不是特定于语言的):
我需要以等效于以下方式填充表格数据库:
for i,a in enumerate(as):
for j,b in enumerate(a.bs):
for k,c in enumerate(b.cs):
db[i,j,k] = c.data()
此方法强制c发布其私有数据,从而破坏其封装。
我知道该链中的某些链可以被a.update_db
,b.update_db
等取代,但是至少,c仍然必须允许访问其私有数据。
解决此问题的另一种方法是允许C像这样更新数据库:
for i,a in enumerate(as):
for j,b in enumerate(a.bs):
for k,c in enumerate(b.cs):
c.update_db_at(i,j,k)
这将使C知道它本不应该真正关心的i,j,k,并且C的责任与更新数据库无关,而只是表示某些对象。
这对我来说似乎是一个非常普遍的问题,并且我敢肯定有一些标准的最佳实践。
从不破坏封装的相应嵌套对象结构中填充嵌套DB的好方法是什么?