我有许多属性的类,在某些情况下,它包含其他复杂的类。不是总是我会使用这个完整的模式,但有时候我会这样做。创建对象,处理它然后按需检索信息的最佳做法是什么?
我给出了一个非常简单的例子来澄清:
设置与班级student
相关的班级professor
。此类与其他类相关,例如classes
,schedules
等。总之,我需要使用所有这些信息。
我是否要在对象student
中保留教授的ID,然后在需要时加载信息?我应该创建一个仅用于存储教授ID的属性,还是创建一个new
professor
对象而不将所有其他数据加载到其中,只需存储ID
?或者都不是?什么是最佳做法?
感谢。
答案 0 :(得分:2)
答案 1 :(得分:2)
建议1
您的应用程序是否需要保存&加载对象的值&属性(也称为“序列化”或“持久化”)?
您的应用程序是否需要具有同一类的多个实例?
如果这个问题的答案是正确的,那么您似乎需要将数据存储在D.B.中,就像@larsmans建议的那样。
建议2
另一件事。您没有提到您使用的编程语言。在C ++,Delphi(Object Pascal),D等编程语言中,可以通过两种方式处理另一个对象内的对象:作为对象的一部分,或作为指向子对象的指针。
对于你的场景,我建议使用指向对象的方法。
在Java,PHP,C#,VB.NET等编程语言中,有一个叫做引用的概念,实际上它与指向对象的指针相同,所以你不需要做任何其他事情。
非指针示例:
class SubClass
{
public:
int X;
int Y;
}; // class SubClass
class MainClass
{
public:
int Color;
SubClass SubObject;
public:
/* constructor */ MainClass()
{
this.Color = 7;
this.SubObject();
} // /* constructor */ MainClass(...)
/* destructor */ ~MainClass()
{
this.~SubObject();
this.Color = 0;
} // /* destructor */ MainClass(...)
}; // class MainClass
void main()
{
MainClass* MainObject = new MainClass();
MainObject->Color = 5;
MainObject->SubObject.X = 19;
MainObject->SubObject.Y = 32;
delete MainObject();
} // void main(...)
指向对象的指针示例:
class SubClass
{
public:
int X;
int Y;
}; // class SubClass
class MainClass
{
public:
int Color;
SubClass* SubObject;
public:
/* constructor */ MainClass()
{
this.Color = 7;
this.SubObject = new SubClass();
} // /* constructor */ MainClass(...)
/* destructor */ ~MainClass()
{
delete this.SubObject();
this.Color = 0;
} // /* destructor */ MainClass(...)
}; // class MainClass
void main()
{
MainClass* MainObject = new MainClass();
MainObject->Color = 5;
MainObject->SubObject->X = 19;
MainObject->SubObject->Y = 32;
delete MainObject();
} // void main(...)
干杯。
答案 2 :(得分:1)
在一般情况下,您需要一些实体加入您域中的实体。比如说,你将有一个StudentRegistry
来保存学生和他们的教授/讲师之间的通信。这确实类似于RDBMS架构设计,因此您可以参考ER DB design method(显然,您将拥有类而不是表。)
答案 3 :(得分:0)
听起来你在描述lazy loading。