MVC简介

MVC设计模式简介

MVC结构是位那些需要为同样的数据提供多个视图的应用程序而设计的,它很好的实现了数据层与表示层的分离。MVC作为一种开发模型,通常用于分布式应用系统的设计和分析中,以及用于确定系统各部分间的组织关系。对于界面设计可变性的需求,mvc把交互系统的组成分解成三个部件:模型、视图、控制。

它们之间的关系如下图所示:

视图:视图部件把表示模型数据以及逻辑关系和状态的信息以特定形式展示给用户。它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图。

控制器:控制器部件是处理用户与软件的交互操作的,其职责是控制提供模型中的任何变化的传播 ,确保用户界面与模型间的对应联系;它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。

模型:模型部件保存了有视图显示,有控制器控制的数据;它封装了问题的核心数据、逻辑和功能的计算关系,它独立于具体的界面表达。

三者之间的关系:模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其他依赖于这些数据的视图都反映到这些变化。因此,无论何时繁盛了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。

这其中运用到了我们之前学到的组合模式、策略模式、观察者模式。

组合模式:

定义:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。(如图2所示)


图2

说明:Component:表示组合中的对象声明接口,在适当情况下,实现所有类共有的接口的默认行为。声明一个接口用于访问和管理component的子部件。

Leaf:在组合中表示叶节点对象,叶节点没有子节点。

Composite:定义枝节点行为,用来存储子部件,在component接口中实现与子部件有关的操作,比如增加add和删除remove。

透明方式:


图3

说明:在component中声明所有用来管理子对象的方法,其中包括add、remove等。这样实现component接口的所有子类都具备了add和remove。这样做的好处是叶节点和枝节点对于外界没有区别,他们具有完全一致的行为借口。但是问题也很明显按,因为leaf类本身不具备add和remove的方法的功能,所以实现它是没有意义的。

安全方式:



图4

说明:就是在component接口中不去声明add和remove方法,那么子类的leaf也就不需要去实现它,而是在composite声明所有用来管理子类对象的方法,这样做就不会出现上面提到的问题,不过由于不够透明,所有树叶和树枝类将不具有相同的接口,客户端的调用需要做相应的判断,带来了不方便。

策略模式:

定义:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。




图5

观察者模式:

定义:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值