170 похожих чатов

// Model.h #ifndef MODEL_H #define MODEL_H class Model { public: int

getData();
void setData(int newData);

private:
int data;
};

#endif // MODEL_H

// View.h
#ifndef VIEW_H
#define VIEW_H

#include <wx/wx.h>
#include "Model.h"

class View : public wxFrame {
public:
View(const wxString& title, Model* model);
void updateView();

private:
Model* model;
wxPanel* panel;
wxTextCtrl* textCtrl;
wxButton* button;

void onButtonClicked(wxCommandEvent& event);
};

#endif // VIEW_H

// Controller.h
#ifndef CONTROLLER_H
#define CONTROLLER_H

#include "Model.h"
#include "View.h"

class Controller {
public:
Controller(Model* model, View* view);
private:
Model* model;
View* view;
};

#endif // CONTROLLER_H

// Model.cpp
#include "Model.h"

int Model::getData() {
return data;
}

void Model::setData(int newData) {
data = newData;
}

// View.cpp
#include "View.h"

View::View(const wxString& title, Model* model) : wxFrame(NULL, wxID_ANY, title), model(model) {
panel = new wxPanel(this, wxID_ANY);
textCtrl = new wxTextCtrl(panel, wxID_ANY, wxString::Format(wxT("%d"), model->getData()), wxPoint(10, 10));
button = new wxButton(panel, wxID_ANY, wxT("Изменить"), wxPoint(10, 50));

button->Bind(wxEVT_BUTTON, &View::onButtonClicked, this);
}

void View::updateView() {
textCtrl->SetValue(wxString::Format(wxT("%d"), model->getData()));
}

void View::onButtonClicked(wxCommandEvent& event) {
int newData;
textCtrl->GetValue().ToLong(&newData);
model->setData(newData);
updateView();
}

// Controller.cpp
#include "Controller.h"

Controller::Controller(Model* model, View* view) : model(model), view(view) {
view->updateView();
}

// main.cpp
#include <wx/wx.h>
#include "Model.h"
#include "View.h"
#include "Controller.h"

int main(int argc, char** argv) {
wxApp app(argc, argv);

Model model;
View view(wxT("MVC Пример"), &model);
Controller controller(&model, &view);

view.Show(true);
return app.MainLoop();
}
Такой код сгенерила gpt для паттерна mvc. Но здесь же неправильная реализация? Вьюха напрямую с моделью взаимодействует?

4 ответов

29 просмотров

Вьюха и должна с моделью взаимодействовать (код не смотрел)

TERMIT- Автор вопроса
Ilya Zviagin
Вьюха и должна с моделью взаимодействовать (код не...

Разве контроллер не выступает посредником между ними? Есть разные трактовки, а как правильно?

TERMIT- Автор вопроса
Ilya Zviagin
Вьюха и должна с моделью взаимодействовать (код не...

По первому запросу в гугл, там на схеме они не взаимодействуют.

TERMIT
Разве контроллер не выступает посредником между ни...

Контроллер выступает посредником только в одну сторону в сторону воздействия вьюхи на модель Вот это взаимодействие принято делать через контроллер на самом деле сейчас эти контроллеры н**** никому не нужны потому что основная их идея это абстрагировать способ отправки команды модели а современных графических системах чаще всего такая функциональность есть и без написания кода: меню, кнопки, и прочие элементы управления в графическом интерфейсе

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта