接上上篇,来总结行为模式的剩余六个.
六,观察者模式(Observer):
1,定义:定义了一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
2,基本结构图:
3,总结:
当一个对象的改变需要同时改变其他对象的时候,而且它不知道具体有多少个对象有待改变时,我们就使用观察者模式。当然,当一个抽象模型有两个方面,其中一个方面依赖另一方面,这是用观察者模式可以将这两者封装在独立的对象中使它们各自独立的改变和复用。
4,引用举例:公司前台替员工看老板是否回来。
七,迭代器模式(Iterator)
1,定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
2,基本结构:
3,总结:在.NET中,IEumerator支持对非泛型集合的简单迭代接口。迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样可以做到不暴露集合的内部结构,又可以让外部代码透明化地访问集合内部的数据。在访问数组,集合,列表等数据时,尤其是数据库时,是非常普遍应用的,因此各种高级语言都对它进行了封装,所以我们直接用封装即可。
4,应用举例:公交车售票员售票
八,职责链模式(Chian of Responsiblity):
1,定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
2,基本结构图:
3,总结:职责链模式可以使接收者和发送者都没有对方的明确信息,且链中的对象自己也并不知道链的结构。结果是职责链可简化对象的相互连接,它们仅需保持一个指向其后继者的引用,而不需要保持它所有的候选接受者的引用。
4,应用举例:公司申请加薪
九,中介者模式(Mediator):
1,定义:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
2,基本结构图:
3,总结:用处,一般应用于一组对象以定义良好但是复杂的方式进行通信的场合。中介者模式很容易理解,也容易在系统中应用,当然更容易在系统中误用。当出现多对多交互复杂的对象群时,不要急于使用中介者模式,而应该先考虑自己设计的是否合理。
4,引用举例:联合国安理会
十,解释器模式(interpreter)
1,定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
2,基本结构图:
3,总结:当一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树时,可以使用解释器模式。此模式可以很容易的改变和扩展文法,因为该模式使用类表示文法规则,你可以使用继承来改变或扩展文法。 当然它的不足:此模式为文法中的每一条规则至少定义了一个类,因此包含许多规则的文法可能难以管理和维护。
4,引用举例:翻译音乐普
十一,访问者模式(Visitor):
1,定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
2,基本结构图:
3,总结:访问者模式适用于数据结构相对稳定的系统,它将数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由的演化。也就是把处理从数据结构分离出来。其优点就是增加新的操作时很容易,因为增加新的操作就意味着增加一个新的访问者。其缺点就是,增加数据结构变得困难。
4,引用举例:男人和女人成功失败。
总此为设计模式中的行为模式的总结,还是需要多实践才能见真知。
分享到:
相关推荐
在IT软件开发领域,设计模式是解决常见问题的成熟方案,是经验的总结,能够帮助开发者写出更加灵活、可维护的代码。以下是对标题和描述中提到的设计模式及相关原则的详细解释: 1. **开放——封闭原则(OCP)**: ...
7. **设计模式**:熟练应用设计模式可以提高代码的可读性和复用性。笔试题可能会涉及对某种设计模式的实际应用或识别。 8. **算法与数据结构**:虽然Java笔试题不一定涉及复杂算法,但基础的排序、查找算法,以及...
### Java设计模式详解 #### 一、概述 Java设计模式是一种软件工程领域的经典主题,它主要探讨了在...以上只是部分设计模式的介绍,更多关于Java设计模式的内容及其实现细节,请参阅原书以获得更深入的理解和学习。
设计师需考虑用户需求、行为模式和目标,通过信息架构、导航设计、交互设计和可用性测试等手段优化用户体验。 5. **交互设计**:交互设计涉及用户与界面的互动方式,包括按钮、链接、表单等元素的交互行为。良好的...
6. **MVC(Model-View-Controller)架构**:ASP.NET MVC框架提供了一种分离关注点的设计模式,有利于开发出可维护、可测试的代码。 回到物流网站源码,我们可以期待看到以下关键部分: 1. **登录与权限管理**:...
### Java程序员成长之路——从菜鸟到笨鸟 #### 一、引言 《Java程序员由菜鸟到笨鸟》是一本由曹胜欢编写的书籍,旨在帮助初学者掌握Java编程的基础知识并逐步进阶,最终成为一名合格的Java程序员。本书不仅涵盖了...
这种设计模式使得Qt Creator不仅限于C++开发,还能支持其他语言和工具链,如Python、QML等。通过插件,我们可以实现诸如代码高亮、自动完成、调试器集成等多种功能。 首先,要理解Qt Creator的插件架构,它基于插件...
Java中的正则表达式是处理字符串的强大工具,它允许我们以模式匹配的方式来处理文本,进行查找、替换、分割等操作。在Java中,正则表达式主要由`java.util.regex`包提供支持,主要包括`Pattern`和`Matcher`两个核心...
《智能监控系统——计算机类毕业设计与课程作业解析》 智能监控系统,作为现代信息技术与人工智能技术的重要结合,已经在诸多领域中发挥着不可或缺的作用。在计算机科学的学习过程中,理解和实现这样一套系统对于...
而人工智能技术的应用,使得系统可以对收集到的数据进行分析,并根据预设的规则或学习到的模式进行智能决策。 智能家居系统的核心在于其智能化的控制能力。通过单片机收集环境数据,系统可以实时监控家中的各种环境...
三态门是一种特殊的逻辑门,它的输出不仅可以是逻辑1或逻辑0,还可以处于第三种状态——高阻抗状态(Hi-Z)。当处于高阻抗状态时,输出相当于开路,对外部电路不产生任何影响。这种特性使得三态门在多种应用场景中变...
这个项目作为毕业设计或课程作业,旨在让学生实践Go语言和Gin框架的开发能力,理解在线客服系统的架构和工作原理,以及SAAS模式的应用。 7. **学习资源与进阶** 对于想要深入学习Go语言和Gin框架的同学,可以参考...
Visual Basic(简称VB)作为一款由微软开发的编程语言,自从推出以来,就以其直观的可视化设计界面和事件驱动的编程模式,为初学者和专业开发者提供了一种快速创建应用程序的途径。本文将深入探讨VB软件的基础知识,...
在这个知识系统中,协同过滤将被用来分析开发者的行为模式,如浏览历史、收藏、提问和回答等,从而推荐他们可能感兴趣的知识点、问题或解决方案。 首先,系统设计需要包含用户模块,用于管理用户的个人信息、兴趣...
在社交网络分析中,智能体可以代表用户,通过学习用户的行为模式和互动关系,揭示网络的结构特征和社会动力学。 在这个压缩包的"Graduation Design"子文件夹中,可能包含以下内容: 1. **源代码**:这些源代码可能...
这涉及到网络请求处理(如使用Retrofit或Volley库)、数据绑定(如使用MVVM架构和LiveData)以及适配器设计模式显示推荐新闻列表。同时,优化用户体验,如加载动画和错误处理也是客户端开发的重要部分。 六、项目...
计算机视觉是该系统可能涉及的另一个关键领域,它涉及到图像处理、模式识别和机器学习等技术,用于分析和理解视频数据。在视频监控系统中,计算机视觉技术可以用于人脸识别、行为分析、异常检测等功能,提升监控效率...
你会了解到如何创建自定义控件,定义其属性和方法,以及如何通过继承和多态性来实现更复杂的设计模式。 事件驱动编程是VB的核心编程模型。书中会详细解释各种控件的事件,如Click、MouseMove等,以及如何编写事件...
针对合肥幼儿师范学校快递服务存在的问题,如安全性低、取件不便以及效率不高等,我们计划创建一个校园快递服务平台——“菜鸟校园驿站”,以解决这些问题并提供更优质的服务。 一、项目分析 1. 业务模式:我们的...
Log4j2的设计目标是提供灵活的日志记录解决方案,支持各种日志级别(如DEBUG、INFO、WARN、ERROR和FATAL),并且允许动态配置,使得在运行时可以改变日志输出的行为。 首先,Log4j2的核心组件包括Logger、Appender...