2008-11-26 4 views
2

Я хотел бы знать, правильно ли этот подход или если это лучший способ сделать это.Заполните объект объекта во время вызова свойства

У меня есть класс Person, в котором есть несколько других классов в качестве переменных, каждый из настраиваемых классов создается путем передачи идентификатора Person, а затем этот класс извлекает нужные ему данные с использованием этого идентификатора. Я открываю переменные классы через Properties.

В настоящее время я запускаю классы переменных, когда создаю экземпляр класса Person, и большое их число означает, что время, необходимое для создания экземпляра класса Person, растет. Моя идея состояла в том, чтобы переместить инстанцирование переменных классов в объявление Propertie, а затем использовать оператор If здесь, чтобы создать экземпляр, если он еще не был выполнен.

Как я сказал выше, этот подход правильный или это лучший способ сделать это?

Благодаря

+0

@ Matt - ленивое загруженным свойство это то, что я не знал, что это называется, что, @All whatare альтернатива? – 2008-11-26 21:51:22

ответ

2

Существует термин для техники вы описываете; это называется «ленивые свойства». Это, безусловно, должно помочь распространить вашу нагрузку на этот объект от «начального» конструктора.

С другой стороны, похоже, что то, что вы описываете, приведет к ужасно плотно связанной объектной модели (если у вас ее еще нет), что может отрицательно сказаться на этом коде ремонтопригодность. Однако я не думаю, что серьезная диссертация по этой теме и тому, как работать в противном случае, действительно находится в рамках этого вопроса.

+0

Привет, Мэтт, да, я знаю, что классы, которые я создаю, бедны, но я - пятый разработчик этого проекта через 4 года, и он находится в очень плохом состоянии! Прежде чем я буду работать над структурой базы данных, я хочу создать бизнес-уровень, после чего я вернусь и улучшу их. Отделение - первая проблема в моменте. – 2008-11-26 21:49:25

+0

Я не хочу создавать впечатление, что ваши классы по своей сути «бедные», просто потому, что наличие множества разных зависимостей в одном классе - это то, что называется «запахом кода». Приложение, скорее всего, будет трудно поддерживать, и, вероятно, будет сложно провести тестирование. – 2008-11-27 05:41:49

2

Просто уточнить: Если вы имеете в виду создание экземпляров классов на получателе их доступа, тогда да, это прекрасный подход, называемый Lazy Loading.

Например

public Property ChildClass as PersonChildClass 

    Get 

     if _childClass is Nothing   
      _childClass = new PersonChildClass(_personId) 
     End If 
     return _childClass 
    End Get 
End Property