Model (Модель): отвечает за управление данными, бизнес-логикой и правилами приложения. Она взаимодействует с базой данных и выполняет операции над данными.
View (Представление): отображает данные из модели пользователю и определяет, как информация будет представлена. Она отвечает за интерфейс пользователя.
Controller (Контроллер): обрабатывает ввод пользователя, взаимодействует с моделью и обновляет представление. Контроллер получает запросы от представления и реагирует на них, изменяя модель и состояние представления.
Код: Выделить всё
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
// Модель
class Model {
public:
void addItem(const std::string& item) {
items.push_back(item);
}
const std::vector<std::string>& getItems() const {
return items;
}
void setItems(const std::vector<std::string>& newItems) {
items = newItems;
}
private:
std::vector<std::string> items;
};
// Представление
class View {
public:
void displayItems(const std::vector<std::string>& items) const {
std::cout << "Items in the list:\n";
for (const auto& item : items) {
std::cout << " - " << item << "\n";
}
}
void promptForItem() const {
std::cout << "Enter a new item: ";
}
};
// Контроллер
class Controller {
public:
Controller(Model& model, const View& view)
: model(model), view(view) {}
void addItem(const std::string& item) {
model.addItem(item);
}
void displayItems() const {
view.displayItems(model.getItems());
}
void promptForAndAddItem() {
view.promptForItem();
std::string item;
std::getline(std::cin, item);
addItem(item);
}
private:
Model& model;
const View& view;
};
int main() {
Model model;
View view;
Controller controller(model, view);
std::string command;
while (true) {
std::cout << "Command (add/show/exit): ";
std::getline(std::cin, command);
if (command == "add") {
controller.promptForAndAddItem();
} else if (command == "show") {
controller.displayItems();
} else if (command == "exit") {
break;
} else {
std::cout << "Unknown command!\n";
}
}
return 0;
}
View: отвечает за отображение списка элементов и запрашивает ввод от пользователя.
Controller: связывает модель и представление, обрабатывает команды пользователя.
Код: Выделить всё
g++ -std=c++11 -o mvc_example mvc_example.cpp