Форум
Архитектура программного обеспечения
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, CatWarrior, Вы писали: CW>На работе возник спор о том как правильно проектировать классы и связывать их между собой. CW>Есть у нас текст и мы хотим его отправить в одну из N соцсетей (facebook, twitter, evernote, poket ...). Эта задача состоит из подзадачи: подсоединение к соцсети (получение access токена или логина/пароля). CW>Для каждой соцсети заводим по классу, который определяет ее статус, позволяет подключиться к ней, разлогинится и др. Далее я написал класс (ServiceConnector) решающий подзадачу подсоединения к любой соцсети (какой именно передается в методе). CW>Когда я пишу класс для решения задачи я считаю что этот класс должен полностью решать поставленную задачу включая все подзадачи. Т.е. Мой класс решающий проблему шаринга (TextSharer) содержит объект класса ServiceConnector. В итоге когда мы отправляем текст то объект класса TextSharer обработает ситуацию когда пользователь не подключен к сети и делегирует эту проблему внутреннему объекту класса ServiceConnector. Если пользователь уже подключен то шарим сразу. CW>Мои коллеги сказали что так делать неправильно и надо хранить объекты классов TextSharer и ServiceConnector на одном уровне т/е/ в контроллере (MVC) вида на котором мы хотим шарить текст. Контроллер должен в начале подключиться к сети через объект класса ServiceConnector а затем по результату обратиться к TextSharer и отправить текст. Если запрос на отправку текста у объекта класса TextSharer был вызван без предварительной авторизации то метод объекта TextSharer должен вернуть ошибку. CW>Я вот не очень понимаю такой подход, да он гибче, TextSharer ничего не будет знать о ServiceConnector, но тогда если придется использовать TextSharer в других контроллерах, возникнет дублирование кода, т/к/ для выполнения шаринга необходимо быть подключенным к соцсети. CW>Я понимаю что тема абстрактная и в каждом конкретном случае надо поступать по обстоятельствам но все же. Скажите какой подход вам ближе и почему.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …