Вопрос новичка - инкапсуляция и «прокси-классы» - PullRequest
0 голосов
/ 18 августа 2011

Во время изучения c # я понял из чтения кода других людей, что хорошей практикой является отделение определенных классов от программы с помощью своего рода «прокси-класса». А именно те программы с личными данными.

Например, скажем, у меня есть класс базы данных, который выполняет почти все мои взаимодействия с базой данных. Он имеет метод «Отправить данные» и «Чтение данных».

У меня также есть класс Manager, в который я поместил частный экземпляр класса Database. В этот класс Manager я также включил метод «Чтение данных из базы данных» и «Отправка данных в базу данных». Все, что они делают, это принимают необходимые параметры и используют их для запуска методов чтения / записи базы данных.

Кроме нескольких методов misc, код которых можно легко запустить из другого места, единственной целью Manager является выступать в качестве посредника между программой и классом Database, чтобы предотвратить необходимость создания экземпляра Database непосредственно в форме.

Я на правильном пути или просто создаю для себя больше работы, а не просто создаю объект базы данных в форме и запускаю все прямо оттуда?

1 Ответ

1 голос
/ 18 августа 2011

Я с Джоном Сондерсом по этому вопросу - вы используете класс в некоторой области "правильности", но не для реальной цели.

Как описано в вашем примере, используется прокси-класскак абстракция.Ваш исполняемый код не должен ничего знать об источнике данных - он просто отправляет запрос данных и возвращает данные в ответ.Прокси скрывает эту деталь реализации от вас - он может извлекать данные из простого файла, базы данных, веб-службы;это действительно не имеет значения.Это делает ваш код более гибким, поскольку он не привязан к конкретной реализации базы данных, а также делает его тестируемым, потому что вы можете внедрить в него какой-то другой класс, который предоставляет тестовые («фиктивные») данные.

...