如何在不损害封装的情况下化嵌套DB?

时间:2019-06-12 07:28:51

标签: database oop encapsulation

我有以下情况(代码是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_dbb.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的好方法是什么?

0 个答案:

没有答案