`
Coco_young
  • 浏览: 125765 次
  • 性别: Icon_minigender_1
  • 来自: 湖南长沙
社区版块
存档分类
最新评论

设计模式入门——胡老师的监听器模式

阅读更多
序言:学而不总结,等于没学,特别是我以后可能没有很多时间花在这边了(想专心搞ACM),所以打算以后没学一个新的知识点,必须当天理解完,然后写出总结,不废话了,开始今天的总结

自己回寝室后想了想,总结了几点:

1.系统架构问题:程序应尽量写成“低耦合,高内聚”。

(名词解释和理解:
耦合:不同的模块拼装到一起,产生相互依赖的关系。
高耦合:不同模块之间连接点很多,造成错综复杂的连接关系,修改程序时牵一发则动全身。
低耦合:模块层次化,我觉得理想的效果是,每一层的模块只与它上一层和下一层的模块进行耦合,同层之间的模块是没有交互的。



2.类的四大基本关系:
a.关联关系:如A类调用B类。
b.继承关系:如A类是B类的父类。
c.聚合关系:如装橘子的箱子,箱子是否存在与里面装没装橘子没有任何关系,也就是说橘子不会影响箱子的存在。
d.组合关系:如一个小组,小组是否存在与小组中是否有组员是息息相关的,如果没有组员,小组就不存在了。



3.通过聊天室项目分析系统架构,讲解了事件监听模式:

a.问题:在见面上显示聊天消息时,需要把文本域传给通信模块,在通信模块中把消息显示到文本域上,如果要对界面进行改动的话,需要改动通信模块,修改起来过于蛋疼。




b.解决方案:设计模式之——监听器模式的应用
和按钮加上事件监听器是一个模型





具体化到按钮上:事件源是按钮,监听器是动作监听器。
具体化到聊天室中:事件源是通信模块,监听器待实现。






4.OOA(面向对象分析),OIP(面向接口编程)

还是上述模型,假设我的消息监听器就是一个Class,那么它的功能是捕捉通信模块收到的文本消息,然后显示到界面模块上。如果我要捕捉其他的消息,或者说做出不同的处理呢?如果消息监听器是个Class的话,那么我就要实现多个不同的监听器,并在通信模块中修改代码,也很蛋疼。
换用Interface,把消息监听器定义成一个Interface,那么整个模块图就成下面的样子了。





这样子,我要怎么处理消息,我就怎么处理消息,只需要实现一个新的类就OK了,再也不蛋疼了。
还有一点:消息也定义成Interface,那么我要增加消息的种类只需要实现新的消息类就OK了,不必修改通信模块的代码。

5.总结:设计软件要做到“低耦合,高内聚”,理解四大关系,多用接口,先定规则再实现,根据实际情况选择相应的设计模式,理解胡老师的监听器模式

感言:有了接口,妈妈再也不用担心我的学习。

最后再附上一个今天的小练习,简单的事件监听模式的应用。
  • 大小: 11.4 KB
  • 大小: 15.2 KB
  • 大小: 15.5 KB
  • 大小: 31.4 KB
2
2
分享到:
评论

相关推荐

    JavaWeb开发教程——入门与提高篇(含PDF课件和源码)

    2. **MVC设计模式** MVC(Model-View-Controller)是JavaWeb开发中常见的架构模式。模型(Model)负责业务逻辑,视图(View)呈现数据,控制器(Controller)处理用户交互。理解并能运用MVC模式有助于构建清晰、可...

    Flex从入门到实践——源代码(21,22,23,24章)

    Flex是Adobe公司开发的一种用于构建富互联网应用(RIA, Rich Internet Applications)的开源框架,它...这些源代码不仅适合初学者作为学习资料,也对有一定经验的开发者有参考价值,可以借鉴其中的设计模式和最佳实践。

    Flex从入门到实践——源代码(18,19,20章)

    常见的布局管理器有HorizontalLayout、VerticalLayout、FormLayout等,它们为开发者提供了灵活的界面设计方式。此外,章节可能还涉及了自定义组件的创建,通过继承现有的UIComponent或者Spark Components,可以实现...

    android 应用 源代码——客户端

    标题中的“android 应用 源代码——客户端”表明这是一个关于Android客户端应用程序的源码集合,这将涵盖多种功能和设计模式,对开发者来说极具价值。描述中提到,这个压缩包包含几十个电子书和源代码,都是在最近...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的每个语法都提供了一个或多个例程讲解 ...

    Struts经典入门篇

    在《Struts经典入门篇》中,孙卫琴通过一个简单的Struts应用示例——helloapp,带领读者快速入门Struts框架,掌握基于MVC设计模式的Web应用开发基本流程。本文将深入解析helloapp应用的构建过程,涵盖需求分析、框架...

    java swing 入门教程

    Swing不仅仅是一组组件的集合,它还引入了一个重要的设计模式——MVC(Model-View-Controller,模型-视图-控制器)。MVC旨在将应用程序的不同部分分离,以便更好地管理和维护。具体而言: - **模型(Model)**:...

    java入门提升小项目,DVD租借系统

    Java入门提升小项目——DVD租借系统是一个理想的实践平台,旨在帮助初学者巩固Java基础知识,进一步理解面向对象编程思想,并熟悉Java集合的使用。在这个项目中,我们将构建一个模拟DVD租赁业务的应用,涵盖用户管理...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的每个语法都提供了一个或多个例程讲解 ...

    Flex从入门到实践_1

    这是Flex实现MVVM(Model-View-ViewModel)设计模式的关键特性。 7. **服务和数据访问** Flex可以与各种后端服务进行通信,如AMF、SOAP、RESTful API等。学习如何使用HTTPService或WebService组件发送请求、处理...

    AXIS2 入门文档

    - **Listeners/Observers**:定义监听器或观察者。 - **服务配置**:针对具体服务的配置,通常包含在每个服务的目录下的部署文件中。 - **Module配置**:用于配置特定功能模块的行为,例如安全模块、日志记录模块等...

    [Android开发从入门到精通].扶松柏.扫描版 pdf

    根据提供的文件信息,我们可以推断出这是一本关于Android开发的书籍——《Android开发从入门到精通》,作者为扶松柏。尽管具体内容链接无法直接访问,但基于标题、描述及部分可见信息,我们可以总结出一些重要的知识...

    Javascript教程--从入门到精通【完整版】

    ### JavaScript教程——从入门到精通 #### 一、JavaScript概览及重要性 随着互联网技术的迅速发展,人们的工作和生活方式发生了翻天覆地的变化。在这个互联互通的时代,如何有效地利用互联网资源成为了一个重要的...

    Java Servlets编程指南,相当不错的sservlets入门教程.rar

    8. **监听器(Listener)**:监听器监听特定事件,如会话创建、销毁、请求初始化等,可实现自动化任务。 9. **MVC框架**:Servlet常与Model-View-Controller(MVC)设计模式结合使用,如Spring MVC,提高代码组织...

    JavaScript与JScript从入门到精通

    JavaScript提供了五种基本数据类型:Undefined、Null、Boolean、Number和String,以及一种复杂数据类型——Object。此外,JavaScript还有动态类型特性,意味着变量可以随时改变其数据类型。 函数在JavaScript中是第...

    基于Java基础的飞机大战项目

    8. **设计模式**:尽管对于初级项目,设计模式不是必须的,但了解一些基本的设计模式,如单例模式(用于管理游戏实例)和工厂模式(用于创建对象),可以提升代码的可维护性和扩展性。 通过这个飞机大战项目,你...

    Java Web 实训2012-12-9.ppt

    【Java Web实训课程详解】 ...通过这门实训课程,学生不仅能掌握Java Web开发的基础技能,还能在实践中理解和应用MVC设计模式,提升软件项目开发的全流程操作能力,为未来的职业生涯奠定坚实基础。

    Quartz任务调度快速入门

    - **作用**:由于Quartz在每次执行任务时都会重新创建一个 `Job` 实例,因此它不能直接接收一个 `Job` 的实例,而是需要一个类来描述 `Job` 的实现类及其相关静态信息,如任务的名字、描述、关联的监听器等。...

    JavaScript语言精粹(JavaScript.The.Good.Parts).pdf

    - **事件委托**: 使用事件委托技术来减少事件监听器的数量,提高性能。 - **异步编程**: 利用回调函数、Promise和async/await来实现异步编程。 #### 四、结语 《JavaScript语言精粹》这本书不仅是初学者入门...

Global site tag (gtag.js) - Google Analytics