`
Coco_young
  • 浏览: 120125 次
  • 性别: 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
分享到:
评论

相关推荐

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

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

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

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

    Java开发技术大全 电子版

    14.4.7事件监听器接口和适配器类456 14.4.8作为参数的事件类456 14.4.9处理多个事件的例子463 14.5Swing组件的特性467 14.5.1Swing组件的优势467 14.5.2Swing组件的体系结构468 14.5.3使用Swing组件编写GUI的...

    antlr4权威指南

    取而代之的是一些广为人知的设计模式,如访问者模式。这意味着,在学会了ANTLR语法之后,你就可以重回自己熟悉的Java领域来实现真正的语言类应用程序。  ANTLR 3的LL(*)语法分析策略不如ANTLR 4的ALL(*)强大,所以...

    黑客反汇编揭秘(第二版).part2.rar

    5.4.7 反监听器 79 5.4.8 反转储器 79 5.4.9 弥补保护机制 80 5.5 容易导致严重后果的小错误 80 第6章 热身 83 6.1 创建保护机制,并尝试破解 83 6.2 走近反汇编器 85 6.2.1 批反汇编器与交互式反汇编器 86 ...

    黑客反汇编揭秘(第二版).part1.rar

    5.4.7 反监听器 79 5.4.8 反转储器 79 5.4.9 弥补保护机制 80 5.5 容易导致严重后果的小错误 80 第6章 热身 83 6.1 创建保护机制,并尝试破解 83 6.2 走近反汇编器 85 6.2.1 批反汇编器与交互式反汇编器 86 ...

    JAVA上百实例源码以及开源项目

    例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;...

    JAVA上百实例源码以及开源项目源代码

    例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;...

Global site tag (gtag.js) - Google Analytics