LINUX.ORG.RU

По поводу архитектуры проекта

 


0

4

Всем хорошего настроения!

Имеется простая прога, в ней есть главное окно, окно настроек, About program, класс трея. У них есть общие данные.

Вопрос : как правильно расшарить данные между всеми этими окнами. Каждое окно - отдельный класс. Мне стоит сделать какой-нибудь главный класс Backend, где и будут лежать все общие данные? Но не будет ли он слишком сильно заграмождён?

Мне стоит сделать какой-нибудь главный класс Backend, где и будут лежать все общие данные?

Да.

Но не будет ли он слишком сильно заграмождён?

Он будет загроможден, если этого не сделать.

no-such-file ★★★★★ ()

Только не Backend. Назови этот класс Application, создай в нем метод
int start(int argc, char** argv)
перемести туда все содержимой main и будь счастлив.

P.S. Синглтон.

trex6 ★★★★★ ()
Ответ на: комментарий от slackwarrior

В рамках одного процесса приложения могут быть запущены 2 приложения?

Синглтон, чтобы с депенденси инжекшен не мучаться.

Application - единственный класс, для которого быть синглтоном не только не спорно, но и правильно.

trex6 ★★★★★ ()
Последнее исправление: trex6 (всего исправлений: 1)
Ответ на: комментарий от trex6

В рамках одного процесса приложения могут быть запущены 2 приложения?

Синглтон, чтобы с депенденси инжекшен не мучаться.

депенденси инжекшен

Охты божечки, какое буквоедство и невмогота в агрегацию :)

В рамках одного процесса приложения могут быть запущены 2 приложения?

Лехко, если эти приложения не абстракция всей программы, а чего-то другого :) Например... приложений этой программы :) Синглтон — это как трубка, без которой Ватсон не может, хотя Холмс курить так и не бросил.

slackwarrior ★★★★★ ()
Ответ на: комментарий от trex6

Чё продолжать-то, slackwarrior верно говорит, хотя и сложно изъясняет. Если Application есть синглтон в единственном экземпляре, то сразу бери выше: всё запихнуть в глобальные переменные. А чё, один экзмепляр же на программу.

Dendy ★★★★★ ()

MVC или Observer Pattern (и аналогичные конструкции).

Отдельно данные, отдельно презентация. Объекты, отвечающие за презентацию либо просто опрашивают объекты, отвечающие за данные, либо просят объекты, отвечающие за данные, уведомить их (презентацию), если(когда) какие-то данные меняются.

Объекты, отвечающие за данные ничего не должны знать о презентации.

invy ★★★★★ ()
Ответ на: комментарий от Dendy

у синглтона есть одно неоспоримое преимущество, о котором ты, конечно же, знаешь

annulen ★★★★★ ()
Ответ на: комментарий от Dendy

Конечно лучше через 100500 уровней абстракции тащить сылку на нужный сервис ради 2х вызовов. Все врно.

trex6 ★★★★★ ()
Ответ на: комментарий от invy

я вот реализовываю как раз таки MVC (благо Qt умеет в MVC). Просто возник вопрос по поводу того, не будет ли всё в куче на этом заднем плане.

zamazan4ik ★★ ()
Ответ на: комментарий от trex6

100500 уровней абстракций того же уровня карго-культизм, что и синглтон через синглтон :)

slackwarrior ★★★★★ ()
Ответ на: комментарий от Dendy

Чё продолжать-то, slackwarrior верно говорит, хотя и сложно изъясняет

Он занимается демагогией. Мысль там отсутствует, поэтому понятия верно-неверно применить невозможно.

Если Application есть синглтон в единственном экземпляре, то сразу бери выше: всё запихнуть в глобальные переменные

Ты дурачка включил, или реально не знаешь разницы?

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

Семантика глобальных переменных и синглтонов схожа: обращение к чему-то извне помимо переменных-членов и аргументов методов. Хотя то что trex6 предложил изначально не есть синглтон и я с ним даже согласен в реализации. Но он почему-то назвал это синглтоном.

Dendy ★★★★★ ()
Ответ на: комментарий от Dendy

обращение к чему-то извне помимо переменных-членов и аргументов методов

Лягушка и крокодил тоже похожи - оба зелёные. У тебя какая-то шизофреническая логика, определение схожести по несущественному признаку.

Хотя то что trex6 предложил изначально не есть синглтон

Обыкновенный сферический синглтон в вакууме.

no-such-file ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.