当我构建移动应用程序(但平台并不重要)时,我遇到了模型类的麻烦。
例如,假设我有一个名为
User
的模型类,其属性为 id
、name
和 age
。我从远程 API 获取用户,将 JSON 解析为该模型类的实例,并且这些属性显示在列表中的某处(请注意,JSON 响应中不存在其他属性)。到目前为止,一切都很好。
但在某些时候,在应用程序的另一部分,我还需要获取其他
User
的属性,例如 address
、email
等。我很难决定如何继续,这也是我的问题。我现在应该创建一个新的模型类吗?继承User
类?或者制作所有字段nullable
?
基本上我每次都会将每个属性设置为
nullable
并仅填充需要的内容。这是个好方法吗?我无法摆脱有更好的方法来做到这一点的感觉。
好吧,所以应用程序的不同部分需要用户对象的不同属性!
这取决于,如何从API获取该用户,您是使用单个调用从单个端点获取该用户,还是它是分布式的(从端点或API获取基本数据和其他数据)从另一个端点或 API 获取)。
因此,如果您从单个端点获取该用户,您应该接受可能会在您的应用程序中使用的所有属性。
如果不是单一端点或 API,现在很复杂,但您可以通过扩展现有用户并从中创建一个包含附加数据的子类来解决它(明白了!)
例如:
class User{
// all basic properties
}
// suppose you go to a screen that need additional info of that user
class FullDataUser extends User{
// add its own properties
// call super class constructor
// manage serialization
}
顺便说一句,创建大量属性
nullable
是一种开销,因为使用可空值需要大量验证(空安全)。