zoukankan      html  css  js  c++  java
  • 【WPF系列】基础学习-WPF设计模式概览

    引言

    “设计模式”这个让程序员提起来就“酷”的东东,着实让让初学设计模式的programer自我陶醉一番。太多的经历,告诉我们“凡事都要个度,要学会适可而止”,否则过犹不及。“设计模式”也一样,切莫为了“模式”而模式(初学者demo除外),那就失去了GOF 等老前辈提出设计模式的初衷(可复用面向对象软件的基础)。

    常见应用程序中的三层架构

    2011051315170021

    三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。

    1、表现层(UIL):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

    2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

    3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。

    更多关于三层架构参考:什么是三层架构?

    WPF在经典三层架构中的位置:

    如果用WPF代替传统的Web和Winform,在经典三层架构中应该处于什么位置呢?

    MVVM_05

    图片来源:http://www.cnblogs.com/KnightsWarrior/archive/2010/11/01/1866641.html

    如感兴趣,可继续看这个有WPF参与的三层应用程序的架构的变体,如下图:

    ToDoSampleArch

    这里:

    • WPF作为展示层 ,
    • WCF service和Bussiness component做为业务层,
    • EntityFramework是数据库访问层

    WPF应用程序常用到展示层设计模式MVVM

    技术层面上,WPF带来了诸如Binding、 Dependency Property、Routed Events、Command、Attached Behavior(依赖属性体系间接实现)、DataTemplate、ControlTemplate等新特性,如何能够将WPF的这些特性发挥到极致,人们提出了MVVM设计模式。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。

    模式演变过程:MVC—>MVP—>MVVM

    顺带提下常用到展示层设计模式:

    更多细节参考http://www.codeproject.com/Articles/66585/Comparison-of-Architecture-presentation-patterns-M

    MVVM模式关系示意图

    View绑定到ViewModel,然后执行一些命令在向它请求一个动作。而反过来,ViewModel跟Model通讯,ViewModel告诉Model更新来响应UI。

    这样便使得为应用构建UI外观设计相对独立,也非常容易替换UI设计(“随心所欲”设计你的界面)。同时,当UI和功能越来越松耦合的时候,功能的可测试性就越来越强。

    常用开源MVVM框架

    基于WPF前台XAML和后台代码分开的结构, MVVM是WPF应用程序推崇的最佳设计模式,现在MVVM模式框架也有不少:

    Microsofts MVVM Toolkit 现在不再更新,感兴趣可以看下源码

    MVVM Foundation

    MVVM Foundation

    现在不再更新
    MVVM最初实现

    MVVM Light Toolkit

    MVVM Light Toolkit

    看名字就知道是轻量级的MVVM框架,现在在移动客户端也有不少应用
    Caliburn.Microhttps://github.com/Caliburn-Micro
    https://caliburn.codeplex.com/
    框架比较大,但现在也有个精简版,并且主推精简版

    patterns & practices: Prism

    微软的开源代码,持续更新中,
    微软主推,当然优势是天生的.

    更多细节参考:http://www.cnblogs.com/KnightsWarrior/archive/2010/11/01/1866641.html

    至于这些框架该怎么选择,后续深入研究。

    目前由于笔者只选择了Prism来开发,其他框架后续慢慢接触。

    参考文献

    什么是三层架构?

    http://www.codeproject.com/Articles/66585/Comparison-of-Architecture-presentation-patterns-M

    http://www.cnblogs.com/KnightsWarrior/archive/2010/11/01/1866641.html

    Model-View-ViewModel (MVVM) Explained

    作者:旭东
    出处:http://www.cnblogs.com/HQFZ
    关于作者:专注于微软平台项目架构、管理和企业解决方案。现主要从事WinForm、ASP.NET、WPF、WCF、等方面的项目开发、架构、管理。如有问题或建议,请不吝指教!
    本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题,可以联系我,非常感谢。
    如果您该文觉得不错或者对你有帮助,请点下推荐,让更多的朋友看到,谢谢!

  • 相关阅读:
    基本语句
    mysql多表查询方法(join)
    MySQL JOIN 多表连接
    MySQL SHOW INDEX语法的实际应用
    1.索引作用
    MySQL索引和优化查询
    mysql复合索引、普通索引总结
    mysql 索引相关
    for循环的break和continue
    保护程序猿滴眼睛---修改VS 2012 编辑器颜色
  • 原文地址:https://www.cnblogs.com/HQFZ/p/4056742.html
Copyright © 2011-2022 走看看