框架设计MVVM

重点:

1.viewmodel 包含model

2.view包含viewmodel,通过驱动viewmodel去控制model的数据和业务逻辑

// Test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <vector>


using namespace std;

#pragma once
//Model数据处理器
class Model
{
public:
	void Increace()
	{
		count++;
	}
	void Decreace()
	{
		count--;
	}
	int GetCount()
	{
		return count;
	}
	void SetCount(int num)
	{
		count = num;
	}
private:
	int count{ 10 };
};

//ViewModel
class ViewModel
{
public:
	ViewModel(shared_ptr<Model> model) :m_model(model)
	{
	}

	int HandleIncrementPressed()
	{
		m_model->Increace();
		return m_model->GetCount();
	}
	int HandleDecrementPressed()
	{
		m_model->Decreace();
		return m_model->GetCount();
	}
	int GetInfo()
	{
		return m_model->GetCount();
	}
private:
	shared_ptr<Model> m_model;
};

class View
{
public:
	View(shared_ptr<ViewModel> vm) :m_viewModel(vm)
	{
	}

	void HandleIncrementPressed()
	{
		m_viewModel->HandleIncrementPressed();
		cout << m_viewModel->GetInfo()<<endl;
	}

	void HandleDecrementPressed()
	{
		m_viewModel->HandleDecrementPressed();
		cout << m_viewModel->GetInfo() << endl;
	}
private:
	shared_ptr<ViewModel> m_viewModel;
};
int main()
{
	shared_ptr<Model> model= make_shared<Model>();
	
	shared_ptr<ViewModel> cont = make_shared<ViewModel>(model);
	shared_ptr<View> view = make_shared<View>(cont);
	view->HandleIncrementPressed();

	view->HandleDecrementPressed();
	return 0;

}

相关推荐

  1. 前端框架MVVM

    2024-07-17 00:24:02       24 阅读
  2. MVVM框架下的Mapster工具包

    2024-07-17 00:24:02       30 阅读
  3. WPF中MVVM常用的框架

    2024-07-17 00:24:02       19 阅读
  4. Vue.js之MVVM设计模式

    2024-07-17 00:24:02       28 阅读
  5. iOS中的MVVM设计模式

    2024-07-17 00:24:02       21 阅读
  6. WPF 结合 MVVM模式下SqlSugar ORM框架的使用

    2024-07-17 00:24:02       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 00:24:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 00:24:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 00:24:02       57 阅读
  4. Python语言-面向对象

    2024-07-17 00:24:02       68 阅读

热门阅读

  1. HTTP基本原理

    2024-07-17 00:24:02       23 阅读
  2. Git 的基本命令和使用方式

    2024-07-17 00:24:02       21 阅读
  3. 1.3Zygote

    2024-07-17 00:24:02       20 阅读
  4. 精准打击:Conda中conda remove命令的高效使用指南

    2024-07-17 00:24:02       22 阅读
  5. react项目使用EventBus实现登录拦截

    2024-07-17 00:24:02       20 阅读
  6. MySQL 关键字 IN 与 EXISTS 的使用与区别

    2024-07-17 00:24:02       22 阅读
  7. 关于ARP欺骗

    2024-07-17 00:24:02       20 阅读
  8. 20. Python读取.mat格式文件通用函数

    2024-07-17 00:24:02       15 阅读
  9. wxml与标准的html的异同

    2024-07-17 00:24:02       17 阅读
  10. 优雅退出Conda环境:conda deactivate命令的妙用

    2024-07-17 00:24:02       21 阅读
  11. 原码补码反码移码

    2024-07-17 00:24:02       18 阅读
  12. Linux 多进程编程详解

    2024-07-17 00:24:02       20 阅读
  13. [Css-in-js]wyw-in-js的使用

    2024-07-17 00:24:02       20 阅读