Разделение объекта между различными объектами - PullRequest
0 голосов
/ 03 февраля 2012

У меня возникла ситуация, когда у меня есть общий ссылочный объект, который передается в качестве параметра другому объекту операции. Это делает код очень грязным, чтобы передать его. Есть ли способ сделать это ссылкой на каждую операцию (например, на сеанс)? Тем не менее, это просто библиотека основного кода. Использование статического класса не является решением.

Спасибо

Ответы [ 3 ]

1 голос
/ 03 февраля 2012

Есть два основных подхода к этому, о которых я знаю:

a) Используйте IoC и зависимость конструктора для передачи вашего общего объекта.Как вы упоминали, если этот объект используется во многих, многих местах, это загрязняет интерфейс и во многих случаях добавляет много беспорядка.

b) Использование окружающего контекста : создание интерфейса на основеsingleton, к которому могут обращаться классы, которым нужен экземпляр объекта.В синглтоне есть установщик, позволяющий переопределить экземпляр (например, для модульного тестирования), поэтому тестирование кода все еще возможно.

1 голос
/ 03 февраля 2012

Решение 1 - Вы можете использовать синглтоны. Они гарантируют, что в работающем коде есть только один экземпляр класса.

Решение 2 - почему бы вам не поместить общий ссылочный объект как свойство объекта с этими операциями? Таким образом, каждая операция имеет к ней доступ. Вы можете сделать что-то необычное, например, если свойство reference имеет значение null, вызвать исключение или около того.

0 голосов
/ 03 февраля 2012

Может быть, шаблон Ambient Context может работать для вас?http://aabs.wordpress.com/2007/12/31/the-ambient-context-design-pattern-in-net/

...