【发布时间】:2012-04-09 21:19:17
【问题描述】:
假设我们有一个 Potato 类(以及因此的实例),它具有用于其他方法但不假装为 public 的属性 smoothness。该属性在创建实例时设置,仅在实例内部使用。
此外,我的系统应该支持多个数据库驱动程序,因此我有一个接口“数据库适配器”,它将使用使用我现在要使用的驱动程序的类进行实例化。
现在问题来了。我需要使对象(马铃薯)持久化并将其保存到数据库中,因此我应该使用数据库适配器类来保存马铃薯的平滑度,但是..它是私有的! 如何发送马铃薯的光滑度而不使其用于其他目的?
提前致谢
【问题讨论】:
-
平滑度属性是如何确定的?如果它是从其他属性派生的,则无需存储它。如果不是,那它是从哪里来的?
-
您是否考虑过使用私有设置器?这样,实例之外的任何人都无法设置平滑度,但可以对其进行检索。任何类,包括您的数据库适配器,都需要读取此值才能写入数据库。
-
平滑度不是派生的,它只是在通过构造函数创建实例时设置的,我希望它对除数据库适配器之外的所有人都是私有的。我知道这很奇怪,我不确定这是否可能。
-
如果适配器和土豆在同一个组件中,您可以将 Smoothness 属性标记为内部。
标签: c# database design-patterns