LINUX.ORG.RU

Теория архитектуры приложения на практике

 , ,


0

3

Делаю приложение на pyqt + бд, в первой версии столкнулся со сложностью системы. Сейчас стараюсь переписать по правилам low cohesion high coupling и другим правилам хорошей архитектуры. Проблем уменьшилось, только всеравно некоторые правила нарушаю. В pyqt при событии(нажатии на кнопку) появляется список где должны отобразиться данные из бд, и так получается что в любом случае в файлах интерфейса приходится обращаться к бд хоть и через обертки. Плюс чем дальше тем больше будут обращений куда интерфейсу лазить по правилам хорошего кода влазить не стоит. Вопрос, как построить архитектуру более правильно?

Пример:

class Window(QMainWindow):
    def __init__(self):
       var = None
       self.button.triggered.connect(self.action)

     def action(self):
         self.accessDb() #????

Посмотри к примеру на шаблон репозиторий. А вообще делай сущности, которые делаю что-то простое, но делают свою работу хорошо. У тебя должно быть не accessDb, а к примеру интерфейс для доступа именно к данным, то что это доступ осуществляется через бд уже детали реализации, к примеру если тебе нужно получать книжки, то это может быть BookService, который в свою очередь просто интерфейс, ну к примеру так:

class IBookService(Interface):
    def get_books(self):
        pass

    def insert_book(self, book):
        pass

и у тебя есть разные имплементации этого интерфейса, которые по разному могут предоставлять книжки, через HTTP, либо через BD либо из оперативной памяти итд:

class DBBookService(implements(IBookService)):
    def get_books(self):
        return execute_sql("...")

    def insert_book(self, book):
        execute_sql("...")

Int64 ★★★
()
Последнее исправление: Int64 (всего исправлений: 1)

Взять не PyQt, а асинхронный Electron/React Native. Ядром Vue.js/React, далее Vuex/Redux. И усё, никаких проблем такого типа.

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

Веб-макакам слово не давали.

anonymous
()
Ответ на: комментарий от menangen

И усё, никаких проблем такого типа.

И тысячи абсолютно левых проблем из веб-солянки

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

Захочу после того как для Qt и C++ выпустят нормальный пакетный менеджер, а в Qt будет человеческий state management. А не то, что сейчас городит каждый неумеха.

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

пакетные менеджеры существуют в дистрибутивах GNU/Linux

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

Вообще не о реализации речь. Вопрос в том, зачем пихать вэбню туда, где в ней нет нужды совершенно никакой. И только.

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