Jika saya ingin menyimpan dan mengambil objek, haruskah saya membuat kelas lain untuk menanganinya, atau lebih baik melakukannya di kelas itu sendiri? Atau mungkin mencampur keduanya?
Mana yang direkomendasikan sesuai dengan paradigma OOD?
Sebagai contoh
Class Student
{
public string Name {set; get;}
....
public bool Save()
{
SqlConnection con = ...
// Save the class in the db
}
public bool Retrieve()
{
// search the db for the student and fill the attributes
}
public List<Student> RetrieveAllStudents()
{
// this is such a method I have most problem with it
// that an object returns an array of objects of its own class!
}
}
Melawan. (Saya tahu yang berikut ini direkomendasikan, namun menurut saya agak bertentangan dengan kohesi Student
kelas)
Class Student { /* */ }
Class DB {
public bool AddStudent(Student s)
{
}
public Student RetrieveStudent(Criteria)
{
}
public List<Student> RetrieveAllStudents()
{
}
}
Bagaimana kalau mencampurkannya?
Class Student
{
public string Name {set; get;}
....
public bool Save()
{
/// do some business logic!
db.AddStudent(this);
}
public bool Retrieve()
{
// build the criteria
db.RetrieveStudent(criteria);
// fill the attributes
}
}