美文网首页
设计模式学习笔记(三)

设计模式学习笔记(三)

作者: 十月石榴2013 | 来源:发表于2018-09-21 16:12 被阅读5次

9. 迭代器模式

迭代器模式提供一种方法顺序访问一个聚合对象的各个元素,而又不暴露其内部的细节。
这使得接口变得更加简洁,也可以让聚合对象更专注在管理对象集合上面,而不必去理会遍历的事情。

大概实现

Emmmm……为多个类都提供一个迭代器子类。

例子(《head first 设计模式》)

用简单数组写的菜单和用vector写得菜单的组合。

例子(《JavaScript 设计模式》)

多类焦点图的循环遍历

PS:单一责任原则:一个类应该只有一个引起变化的原因。

9.5 组合模式

树结构的应用。
“当你有数个对象的集合,它们彼此之间有‘整体/部分’的关系,并且你想用一致的方式对待这些对象时,你就需要组合模式”。
估计MFC还是Qt中的组合框(group类)就是这个模式。


组合模式适用结构
组合模式UML图

例子(《head first 设计模式》)

餐厅菜单和子菜单

例子(《JavaScript 设计模式》)

表单、新闻推荐框

10. 状态模式

状态机,把状态机映射成程序。

UML图

状态模式UML图

例子(《head first 设计模式》)

糖果机

例子(《JavaScript 设计模式》)

超级玛丽的动作

优缺点

优点:

  • 通过更简单的写一个类的方法来实现想以的行为。消除了对if/else或switch/case的依赖。
  • 更易于添加状态
  • 提高了聚合性
  • 奇高了代码的可维护性
    缺点:
  • 类爆炸
  • 随着每个新行为的引入(实际添加行为也只是添加一个concreteState),context类都要进行相应的更新以处理每个行为。这使得上下文行为更容易受到每个新的行为的影响。

11. 代理模式

代理通常是一个介于寻求方和提供方之间的中介(《Python 设计模式》)


代理模式

应用场景:

  • 简化接口
  • 提高了寻求方和提供方的安全性,对双方都是
  • 为远程对象提供了本地接口(适合分布式系统)
  • 为消耗大量内存的对象提供一个轻量级句柄(典型例子:网站用户个人头像。最好只在列表视图中显示缩略图,而在详细介绍的时候,在加载实际图片)
代理模式UML图

典型的代理

a. 虚拟代理

实例化后占大量内存(如图像),则先创建一个占位符(占位符就是虚拟代理)

b. 远程代理

c. 保护代理

例如,在web服务中,认证服务充当负责认证和授权的保护性代理服务器,防止无法识别或未授权的代理访问它们。代理对象会检查调用者是否具有转发请求所需的访问权限。

d. 智能代理

智能代理在访问对象式插入其他操作。例如,检查核心组件有没有上锁。

12. 复合模式(MVC)

模型-视图-控制器复合模式。


图片来自:https://www.cnblogs.com/diyunfei/p/6752618.html

很常用,以至于熟悉到觉得不用细看(尽管当时还不知道这个叫做MVC模式)。

相关文章

  • 《JS设计模式》读书笔记(一)

    标签:JS 设计模式 《JS设计模式》读书笔记(二) 《JS设计模式》读书笔记(三) 《JS设计模式》读书笔记(四...

  • 《JS设计模式》读书笔记(二)

    标签:JS 设计模式 读书笔记链接: 《JS设计模式》读书笔记(一) 《JS设计模式》读书笔记(三) 《JS设计模...

  • 实习第七十四天(设计模式)

    参考 《JS设计模式》读书笔记(二) 《JS设计模式》读书笔记(三) 《JS设计模式》读书笔记(四) 《JS设计模...

  • 简介

    《研磨设计模式》——学习笔记

  • 2020-03-23

    美团设计模式在外卖营销业务中的实践-学习笔记(一) 美团设计模式在外卖营销业务中的实践-学习笔记(一)一、设计模式...

  • Proxy 代理模式

    设计原则学习笔记 设计模式学习笔记 作用 为对象提供增强作用 类图 图为静态代理。另有动态代理模式,由于类图不具...

  • iOS 架构模式学习笔记

    iOS 架构模式学习笔记 设计模式 设计模式 和 编码技巧 、架构模式的区别: 设计模式:特定场景下的最佳实践 如...

  • 《架构师训练营》之设计模式

    极客时间《架构师训练营》第三章学习笔记 设计模式 什么是设计模式?设计模式是对软件设计中反复出现的各种问题所提供的...

  • 设计模式学习笔记(三)

    9. 迭代器模式 迭代器模式提供一种方法顺序访问一个聚合对象的各个元素,而又不暴露其内部的细节。这使得接口变得更加...

  • 《编程设计模式----理论篇》

    说明本文仅供自我学习,为学习笔记参考书籍《大话设计模式》。 设计模式不是为了专门刻意去用,而是我用了这个设计模式能...

网友评论

      本文标题:设计模式学习笔记(三)

      本文链接:https://www.haomeiwen.com/subject/fclanftx.html