【发布时间】:2017-01-24 23:01:35
【问题描述】:
我正在使用 Delphi,但故意不希望您坚持使用特定语言,因为问题是基本问题。
我的应用程序现在包含各种类型的数据记录列表。每条记录都有一组不同的属性。此时,所有记录在 RAM 中都由同一通用类的对象表示。里面有一个字段,代表一个记录类型,getter/setter根据这个字段的内容来锁定和解锁数据的检索或更改。
我计划开发一个使用多态性的严格架构,其中每个记录类型将由相应的后代类表示。父类不会包含任何后代特定的属性,而只会包含常见的属性。
现在,问题来了:
一些可用属性存在于几个后代类中,但不应出现在基类中。它们的 getter 和 setter 是相同的。如何不重复自己并为每个属性编写一个 getter 和一个 setter?
我想到的唯一想法是将基类中的所有属性实现为受保护,然后将它们移动到后代类中的公共部分。
您认为这个解决方案是好是坏?为什么?
还有其他方法可以实现目标吗?
插图:
class Base
prop A
prop B
class Desc1:Base
prop C
prop D
class Desc2:Base
prop D
prop E
class Desc3:Base
prop C
prop E
【问题讨论】:
-
通过属性,你的意思是什么?函数、过程、变量?
-
他最有可能表示该类的成员,例如id
-
@cedric.salaun:在 Delphi 或 C# 等许多编程语言中,有一种名为属性的特殊类成员。它们看起来像变量,但实际上调用方法。