powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Хранилище объектов, как быть?
13 сообщений из 13, страница 1 из 1
Хранилище объектов, как быть?
    #38066978
zebrox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Философский вопрос, возможно даже не серьезный.

Немного почитал про разработку с использованием интерфейсов.
Говорят это удобно, т.к. уменьшает связанность классов. Что объект А "автомобиль" уже не включает в себя целиком другой объект Б "двигатель", а обращается к нему через интерфейс объекта Б, предварительно реализовав его интерфейс.
В итоге, можно использовать в качестве объекта Б, разные объекты, которые реализуют соответствующий интерфейс.
Для тестирования, хорошо, можно написать заглушку вместо настоящего объекта Б, и сделать отладку и тестриование объекта А, предположив, что Б работает так как должен.
Тут все понятно.

Но.
Непонятен вопрос. А где хранить в таком случае эти два объекта, где хранить Б, ведь он уже не будет целиком и полностью включен в А. Получается что необходимо использовать какое-то хранилище этих обхектов. А пердед обращением к Б, А должен получить интерфейс Б и сделть необходимые действия, так получается?

Прочитал такую статью Реализуем сами простой IoC контейнер , но в ней непонятно, а каким образом получить "иммено тот" Б, который "приписан" к А. В том хранилище Resolve делается только по типу, а если много одиннаковых типов...? Понятно, что можно написать такой метод, который будет вытягивать "Б" из контейнера по ключу. Но автор этого не сделал, возможно вся моя концепция неправильная, и нет необходимости хранить объекты раздельно. Но в таком случае, объект А должен включать Б, и смысла в интерфейсах между ними нет...

Или чего-то я не понимаю.
...
Рейтинг: 0 / 0
Хранилище объектов, как быть?
    #38066980
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
zebroxГоворят это удобно, т.к. уменьшает связанность классов.
Врут
...
Рейтинг: 0 / 0
Хранилище объектов, как быть?
    #38066996
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zebrox,

если хотите разобраться с IoC контейнерами - прочитайте Dependency Injection in .NET .
Cамо по себе добавление интерфейсов не приводит к меньше связанности, для этого надо читать хорошие книжки, опыта применения в них написанного.
...
Рейтинг: 0 / 0
Хранилище объектов, как быть?
    #38067049
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2zebroxГоворят это удобно, т.к. уменьшает связанность классов.
Врут
это от того что множественное наследование не осилили - затычку в виде интерфейсов и сделали
...
Рейтинг: 0 / 0
Хранилище объектов, как быть?
    #38067426
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилCat2пропущено...

Врут
это от того что множественное наследование не осилили - затычку в виде интерфейсов и сделали
интерфейсы это не затычка , а множественное наследование не панацея
...
Рейтинг: 0 / 0
Хранилище объектов, как быть?
    #38067439
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pation...а множественное наследование не панацея
а в некоторых случаях и геморрой.
...
Рейтинг: 0 / 0
Хранилище объектов, как быть?
    #38067517
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилэто от того что множественное наследование не осилили - затычку в виде интерфейсов и сделали
Зачем тебе множественное наследование и причем тут интерфейсы?
...
Рейтинг: 0 / 0
Хранилище объектов, как быть?
    #38068547
zebrox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаю...
И на мсдне дочитался до того, что Service Locator и Dependycy Injection паттерны призваны решить одну и туже проблему связанности, только несколько иными способами.

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

А в DI паттерне.
Так понимаю, при создании объкта А, ему, в конструктор передается интерфейс, полученный от объекта Б. И А, может обращаться к Б, через его интерфейс, т.к. есть ссылка на него.

Тут возникает вопрос...
А что дальше происходит с Б после создания? Необходимо ли его где-то хранить? Как мне кажется, полученный интерфейс (при создании Б) будет храниться в А, получается, что Б, будет использован, т.к. хранится ссылка на его интерфейс (не уверен, что так можно сказать), и в таком случае фреймворк его не удалит. Или Б, где-то необходимо хранить?

Как мне кажется, сервис локатор предоставляет большую гибкость, тем, что можно заменять Б, во время выполнения приложения.
В каких случаях лучше использовать один и другой паттерны, какой-нибудь простой пример?
...
Рейтинг: 0 / 0
Хранилище объектов, как быть?
    #38068584
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zebrox,

эта тема не так проста, чтобы ее можно было изложить простым примером. Литературу я вам уже приводил.
...
Рейтинг: 0 / 0
Хранилище объектов, как быть?
    #38068622
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zebrox....Тут возникает вопрос...
А что дальше происходит с Б после создания? Необходимо ли его где-то хранить? Как мне кажется, полученный интерфейс (при создании Б) будет храниться в А, получается, что Б, будет использован, т.к. хранится ссылка на его интерфейс (не уверен, что так можно сказать), и в таком случае фреймворк его не удалит. Или Б, где-то необходимо хранить?...
Пользоваться им надо, а не хранить. Не ясно, откуда у Вас эта идея, хранить где-то что-то? Получили из контейнера или сами инстанцировали, попользовались и забыли (задиспозили при необходимости). Зачем задумываться о хранении? Или какой-то ресурсоемкий объектище/объектищи с с очень дорогим конструктором пользовать надо, и есть смысл его/их кешировать?
...
Рейтинг: 0 / 0
Хранилище объектов, как быть?
    #38068671
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zebrox,
живучесть полученных объектов
все зависит от вашей реализации откуда вы будете брать объект
вот пример A a = new A();
самый примитивный локатор
а умрет при выходе из предела видимости ( если в стеке)
а вот другая реализация

class f{

static A ass=new A();

void fo(){

A a=f.ass; тоже можно назвать примитивным локатором тут берется аки сиглтон
}

}
мне не очень нравится кода эти механизмы называют паттерны декларативного управления временем жизни
...
Рейтинг: 0 / 0
Хранилище объектов, как быть?
    #38068772
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУИзопропилэто от того что множественное наследование не осилили - затычку в виде интерфейсов и сделали
Зачем тебе множественное наследование и причем тут интерфейсы?
интерфейс - чистый абстрактный класс. вся конструкция - частный случай множественного наследования
...
Рейтинг: 0 / 0
Хранилище объектов, как быть?
    #38068815
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилМСУпропущено...

Зачем тебе множественное наследование и причем тут интерфейсы?
интерфейс - чистый абстрактный класс. вся конструкция - частный случай множественного наследования
Это не частный случай множественного наследования, потому что наследование - получение реализации предка. Интерфейсы - всего лишь обязывают реализовывать члены, не более того. Про абстрактные классы ты совсем не в тему ляпнул, ибо их удел - полиморфизм, а не наследование.
Итого, не нужно путать божий дар с яичницей.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Хранилище объектов, как быть?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]