| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > представление сущностей классами |
| Автор: nmn 3.2.2010, 11:57 |
| здравствуйте некоторая сущность представляется в виде класса, есть много экземпляров класса у которых есть одинаковые свойства, а есть различные как можно сделать так чтобы набор одинаковых свойств не повторялся в каждом экземпляре класса? набор одинаковых свойств изменяется в процессе работы, так что сделать наследника класса и задать эти свойства статическими для класса не подходит как это можно реализовать? |
| Автор: ivashkanet 3.2.2010, 12:29 |
| Нифига непонятно. Можно на примере? |
| Автор: nmn 3.2.2010, 13:36 |
вот есть класс с набором свойств, эти свойства тем или иным способом характеризуют экземпляр класса. Эти свойства разбиваются на два вида - которые характеризуют вид объекта и сам объект. Первый свойства одинаковые для всех объектов одного вида, вторые различаются для каждого объекта. придумал, нужно сделать нормализацию как в базах данных может еще есть варианты? |
| Автор: nmn 3.2.2010, 14:51 | ||||
проблема в том что у меня может быть только определенное количество таких классов и я не могу создавать их во время выполнения программы |
| Автор: ivashkanet 3.2.2010, 15:29 | ||
| nmn, елси честно понятнее не стало. Включаю телепатию. В ООП это называется Агрегация. Раз несколько классов могут содержать одини и те же свойства, то чтобы не тратить память и не создавать этот объект много раз предлагается использовать фабрику этих объектов (фабрика либо создает новый либо переиспользует старый). Этот подход описан в паттерне http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%D0%BB%D0%B5%D0%BD%D0%B5%D1%86_%28%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%29. Но прежде чем применять этот подход я предлагаю остановиться и подумать. Агрегацию стоит применять только в том случае, если группа свойств образует группу логически (Адрес, Размер, ...). Объединять Адрес и Фамилию в один агрегат не стоит. Приспособленец довольно сложен в плане реализации и значительно ухудшает понятность кода. В простых случаях лучше использовать подход реализованных в классе Color через статичесткие свойства: Color.Red, Color.Blue, ... СУВ, ivashkanet Добавлено через 1 минуту и 4 секунды
О! Тогда подход класса Color самое оно. |