设计模式:复合模式

首先是各种模式的区分,大概自己筛选了一些关键词

策略:封装变化的,算法族,减少if-else

工厂:生产需要的特定类型

装饰者:添加行为

 

适配器与外观:实现原有接口,方法体却是另一个对象的实现。外观:宏命令,一键设置

代理:本地和远程

单例:只实例化一次

 

命令:宏命令,指定

模板:算法(定义不一样的方法)

迭代器与组合:管理,树,节点有子树,不一样的对象然后组合到同一棵树,组合类别,迭代器:遍历,将不一样的集合改为迭代器

观察者:追踪,通知

 

然后进入主题:复合模式

定义

复合模式结合两个或以上的模式,组成一个解决方案,解决一再发生的一般性问题。MVC和Model2属于典型的复合模式,视图和控制器是策略模式,视图本身是组合模式,模型是观察者模式。

 

复合模式入门例子:鸭子

①有的会叫有的不会:策略模式,封装变化的,算法族

②鹅装成鸭:适配器模式,实现原来的接口,方法体却是另一个对象的实现。一般适配器与外观模式共用,通过外观模式的宏命令,一键设置来操纵适配器的对象

③计算鸭叫的次数:装饰者模式,添加行为

④生产不同类别的鸭子:工厂模式,一个工厂生产一种类别

⑤管理一群鸭子,鸭子有不同的种类:迭代器与组合模式,管理,树,节点又有子树,同样的对象不一样的类别组合到一起,组合类别。组合里的具体调用,通过迭代器

⑥观察某个或者某群鸭子:观察者模式,追踪,通知

 

针对性学习复合模式:MVC模式

①MVC:model-view-controller模型-视图-控制器

View视图:用来呈现模型,视图通常直接从模型中取得它需要显示的状态与数据

Controller控制器:取得用户的输入并解读其对模型的请求

Model模型:模型持有所有的数据、状态和程序逻辑。模型没有注意到视图和控制器,虽然它提供了操纵和检索状态的接口,并发送状态改变给观察者

执行流程:

  1. 用户和视图交互:视图是模型的窗口,用户操作视图,视图就会告诉控制器用户做了什么,控制器就负责处理
  2. 控制器要求模型改变状态:控制器解读用户的动作,并告诉模型怎么做
  3. 控制器也可能要求视图做出改变:当控制器从视图接收到某一动作,结果可能是它也需要告诉视图改变其结果,如控制器可以将界面上某些按钮变无效
  4. 当模型改变状态时,模型会通知视图
  5. 视图向模型询问状态:视图直接从模型取得它显示的状态,当控制器请求视图改变时,视图也可能向模型询问某些状态

一些应用:可以在保留原有视图和控制器的情况下,通过适配器模式适配模型Model

 

②MVP与MVC:MVP的出现就是为进一步分离业务逻辑和界面处理。在MVP中,M与V完全切断联系,由P进行总控。

当V接收到了操作,将相应的请求传递到P,由P进行业务处理以及与M进行交互,同时P又在恰当的时机对view进行更新(接口 / 回调方法 / 事件)

这样V只需要暴露出接口,V与P通过接口通讯,一方面能够将业务逻辑转移至P,一方面通过接口使得P可以适配多个V。

   总的来说:MVP的Model和View之间不进行通讯,都是通过Presenter完成

 

③视图和控制器实现了策略模式,视图是一个对象,可以被调整使用不同的策略,而控制器提供了策略。视图只关心系统中可视的部分,对于任何界面行为,都委托给控制器处理。使用策略模式也可以让视图和模型之间的关系解耦,因为控制器负责和模型交互来传递用户的请求。对于工作是怎么完成的,视图毫不知情

 

模型实现了观察者模式,当状态改变时,相关对象(视图、控制器)将持续更新。使用观察者模式,可以让模型完全独立于视图和控制器,即模型对视图和控制器没有依赖。同一个模型可以使用不同的视图,甚至可以同时使用多个视图。

 

    视图实现了组合模式,视图是GUI组件(标签、窗口、文本组件)的组合,顶层的组件包含其他组件,直到叶节点

 

 

针对性学习复合模式:Model2

  1. Model2:将Web适配MVC,使它符合浏览器/服务器模型,并使用Servlet和Jsp技术的结合,达到MVC的分离效果
  2. 执行流程:HTML界面对Servlet(控制器)发出请求,Sevlet解析用户输入,并对模型(数据库)做出请求(返回JavaBean)。Servlet把控制权交给JSP(视图),(解析JavaBean)产生HTML视图并返回浏览器显示

①用户发出一个会被Servlet收到的HTTP请求,该请求一般包含表单数据、请求头等,然后Servlet解析这些数据

②Servlet扮演控制器:Servlet处理请求,通常会将该请求向模型(一般是数据库)发出,处理结果一般以JavaBean的形式打包

③控制器将控制权交给视图Jsp:视图就是Jsp,Jsp唯一的工作就是产生页面,表现模型的视图(④模型从JavaBean中获得)以及进一步动作所需要的所有控件

⑤视图通过HTTP将页面返回浏览器:页面返回浏览器,作为视图显示出来。用户提出进一步的请求,以同样的方式处理

 

要点

  1. MVC是复合模式,结合了观察者模式、策略模式、组合模式
  2. 模型使用观察者模式,以便观察者更新,同时保持两者之间解耦
  3. 控制器是视图的策略,视图可以使用不同的控制器实现,得到不同的行为
  4. 视图使用组合模式实现用户界面,用户界面通常组合了嵌套的组件,如面板、框架和按钮
  5. 上述模式携手合作,把MVC模型的三层解耦,保持设计干净又有弹性
  6. 适配器模式用来将新的模型适配成已有的视图和控制器
  7. Model2是MVC在Web上的应用
  8. 在Model2中,控制器实现成Servlet,而JSP/HTML实现视图
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值