|
Модераторы: Се ля ви |
|
||
|
Smorodin |
|
||||||||
Добрейший Профиль Группа: Участник Сообщений: 285 Регистрация: 10.4.2006 Где: Пермь Репутация: нет Всего: 1 |
Добрый день!
Прошу порщения, если не в тот раздел.
И вот конкретная ситуация: есть некий класс API:
и используется он так:
И где нибудь в модуле/подсистеме:
То есть API - это некое хранилище, посредник к другим независимым объектам, не хранящий в себе ничего, кроме ссылок. Будут ли сложности при поддержке такого кода? Лично для меня - это хорошее решение, все изменения других классов никак не повлияют на API, и никаких изменений в него писать не надо. Например, если мы изменим MSSQL на MySQL - максимум, это в методе initDB указать другой класс работы в бд, при этом будет полная совместимость всего кода, работающего через API.DB (есть четкое описание API-методов для всех классов: user, db, cache, route... и они обязаны ему соответствовать). Так вот, плохо это, или хорошо? Лично я описание анти-паттерна понял очень буквально: "в одном объекте хранится вообще все и все методы", в нашем же случае - это не так. Является ли вышеописанная реализация антипаттерном? Спасибо! -------------------- Сделать можно все, только вопрос - когда? |
||||||||
|
|||||||||
Фридрих |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 26.1.2013 Репутация: нет Всего: нет |
Очень хороший подход! Об этом я говорю на своей страничке "http://reforma-os.webnode.ru/".....
Сама по себе монолитность - это консерватизм, что не дает быстро развиваться новым идеям, потому что надо будет переписывать весь код, а это не малые затраты.... Я ищу людей заинтересовваных в развиитии проекта, который у меня есть, начинать можно с малого, заработать можно не плохо будет.... |
|||
|
||||
Cтpaнник |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 53 Регистрация: 12.10.2008 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
Описанная реализация не является антипаттерном, зато является паттерном. И именуется он Фасад (Facade).
|
|||
|
||||
BuShaRt |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: нет Всего: 6 |
Думаю, что сам по себе API не должен инициализировать другие объекты внутри себя. Должна быть фабрика, которая будет инициализировать объекты окружения и инъектить их в этот объект. Т.е. объект как бы просто предоставляет мультиинтерфейс к другим интерфейсам, но не содержит информации о том, как инитить эти интерфейсы.
А вот юзать глоабальные переменные - вот это хреновая практика, попробуйте юзать паттерн сингильтон. |
|||
|
||||
Правила форума "Системный анализ, проектирование и UML" | |
|
Форум "Системный анализ, проектирование и UML" предназначен для обсуждения вопросов, так или иначе связанных с этапами жизненного цикла автоматизированных (программных, информационных, автоматических) систем: • предпроектные обследования объектов автоматизации; • разработка концепции создания систем; • моделирование бизнес-процессов (в т.ч. на UML); • проектирование архитектуры систем; • управление проектами; • управление качеством; • CASE-средства; • реинжиниринг. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Системный анализ, проектирование и UML | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |