比方说,我有一个包含“小部件”的数据库。例如,小部件具有长度和宽度等属性。用于创建 wdigets 的原始低级 API 是一团糟,所以我正在编写一组更高级别的函数来让调用者更轻松。数据库很奇怪,我无法很好地控制小部件对象的创建时间。具体来说,直到处理的后期阶段,在某些其他事情首先发生之后,才能创建它。但我希望我的调用者认为小部件对象已在较早阶段创建,以便他们可以从一开始就获取/设置其属性。
因此,我实现了一个调用者可以使用的“ProxyWidget”对象。它有 private_Length 和 private_Width 等私有字段,可以存储所需的值。然后,它还具有我的调用者可以访问的公共属性 Length 和 Width。如果调用者告诉我设置 Width 属性的值,逻辑是:
- 如果对应的widget对象已经存在于数据库中,则设置其Width属性
- 如果没有,请将给定的宽度值存储在 private_Width 字段中以供以后使用。
在稍后的某个阶段,当我确定已在数据库中创建了小部件对象时,我会复制所有值:从 private_Width 复制到数据库 Width 字段,依此类推(不幸的是,一次只有一个字段/属性) .
这适用于一种类型的小部件。但是我有大约 50 种类型,每种类型都有大约 20 个不同的字段/属性,这会导致无法维护的混乱。我想知道是否有更聪明的方法。也许我可以使用反射来创建“代理”对象并以通用方式复制字段/属性数据,而不是编写大量重复代码?以某种方式分解出通用代码?我可以从“数据绑定”模式中学到什么吗?我是一名数学家,而不是程序员,我有一种不安的感觉,即我目前的方法简直是愚蠢的。我的代码在 C# 中。