未来可期-MVVM系统架构设计

MVVM是Model-View-ViewModel的简写,将应用程序的业务和表示逻辑与用户界面 (UI) 清晰分离

MVVM: Model-View-ViewModel :
在原来MVC的基础上增加了一个ViewModule的中间件,将项目结构区分成,

  1. View :视图层
  2. Module :模型层 (实体层)
  3. ViewModule :模型实体交互逻辑层
  4. Service : 实体与数据库交互层。

在这里插入图片描述

进一步拆分

1. View拆分

  1.1 :用户看见的 **Pages** 进行单元模块拆分,比如某一页分为**上中下**三级 
      /1.1.1 :在这里的上中下  拆分成三层   上   ,  中     , 下 。**Controls中**
          每一级当中也对应的拆分成最小单元控件,以方便解耦,重构替换。
      1.2.1 上中下,若为多组件组合,则将上中下,定义的组件放在**Dialogs**目录下定义成 ,上组件组合元素页面, 中组件组合元素页面,下组件组合元素页面
      // 1.1.2  如果是存在页面可共用的属性  例如:文件导入,文件解析 则存放在分层层级**Controls中**的Abstracts中。 
      ///1.1.3如果是页面特有元素,例如对本页面去进行组合的元素则放在分层层级**Controls中**XXX页面文件夹中定义。
     // 1.1.4 工具组件例如:多语言转换 ,字符串转换等工具则也单独定义在一个文件夹内。
     **至此对View完成拆分**
      在这里应该完成 前端UI页面对 ViewModule的数据绑定,以及方法绑定。

2. 对ViewModule进行拆分

 /   2.1 声明注入Module层。形成数据上下文
		[ObservableProperty]
		public ErrorCreateContext errorContext;

		public ErrorCreateViewModel(IMediator mediator, ILangManager langManager) 
		: base(mediator, langManager)
        {
            ErrorContext = App.Current.GetService<ErrorCreateContext>();
            ErrorContext.UpdateEnabledEdit(true);
        }
          
/  2.2 前端**View页面**的数据绑定,方法的声明
public Func<HandlerResult<string>> FuncForGenerateSuffix { get; private set; }
public Func<HandlerResult> FuncForLegalCreateCode { get; private set; }
public void SetFuncForGenerateSuffix(Func<HandlerResult<string>> funcForGenerateSuffix)
{
    FuncForGenerateSuffix = funcForGenerateSuffix;
}
 public void SetFuncForLegalCreateCode(Func<HandlerResult> funcForLegalCreateCode)
 {
     FuncForLegalCreateCode = funcForLegalCreateCode;
 }

// 2.3 对命令的响应

[RelayCommand]
public void SelectErrorModule(ErrorModuleData errorModuleData)
{
    ErrorContext.UpdateErrorModuleData(errorModuleData);
}
[RelayCommand]
public void UpdateCodeNumber()
{
    ErrorContext.UpdateCodeNumber();
}

/ 2.4 对页面属性的绑定

protected override string GetYesDescription()
{
    return "创建";
}
protected override string GetTitle()
{
    return "创建编码";
}

3. 对Contexts ,Module的拆分

  1. 对于ViewModule针对View,存在 多对一的关系 :即 一个View页面 分割成了不同的ViewModule,不同ViewModule对应不同的Contexts 以及命令响应。则系统架构设计上更为清晰。合理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值