Была дана отличная информация, но вы упомянули одну вещь, которая может вас сбить с толку:
«Если у меня есть Public List notes = new List (), тогда такие методы, как ДОБАВИТЬ, УДАЛИТЬ, станут доступны человеку в инциденте».
Все зависит от того, как вы проектируете свои классы. Одна вещь, о которой вы должны подумать, - это то, как эти данные связаны друг с другом. Это поможет вам представить дизайн вашего класса.
Это звучит примерно так:
- В одном инциденте может участвовать много людей
- Один человек может создавать много заметок
- Заметка - это самый низкий уровень, и она существует из-за создания инцидента и ответственных лиц, работающих над этим инцидентом.
Инцидент 1 - много лиц
Человек 1 - много заметок
Вы можете установить этот тип отношений несколькими способами. Одним из способов может быть фактическое разделение задействованных объектов, а затем создание объединенных объектов.
Например
public class Incident {
//insert incident fields here
//do not add person logic / notes logic
//probably contains only properties
}
public class Person {
//insert person fields
//private members with public properties
//do not embed any other logic
}
public class Comment {
//insert comment private fields
//add public properties
//follow the law of demeter
}
Эти классы не передают подробностей друг другу, они просто репозитории для хранения этой информации. Затем вы связываете эти классы друг с другом, например
public class IncidentPersonnel {
List<Person> p;
//add methods to add a person to an incident
//add methods to remove a person from an incident
....
}
Тогда у вас может быть другой класс, обрабатывающий комментарии персонала.
public class PersonnelNotes {
List<Note> n;
//other methods...
}
Вы можете пойти дальше, но это может усложнить ситуацию, но я просто даю вам еще одно представление о том, как с этим справиться.
Постарайтесь следовать закону Деметры для функций
Инкапсулируйте все свои объекты, кроме того, ваш сосед может разговаривать с вами, но не более того ... Это поможет сохранить ваши классы слабо связанными и упростит вам мыслительный процесс.
Наконец, вы упомянули, как должны работать операции CRUD. Все это восходит к вашему DAL (уровень доступа к данным). Вместо того, чтобы возвращать строки данных из таблицы, вы могли бы затем вернуть объект, на который имеется ссылка, со всеми его атрибутами. Добавление и удаление работают одинаково (передача или передача объекта). Вы можете использовать ORM или написать свой собственный DAL. Все зависит от того, насколько вы хотите участвовать :).
person
JonH
schedule
20.01.2010