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

本文探讨了面向对象设计原则、四大关系及其在聊天室项目中的应用,强调了使用接口的重要性来降低耦合度,提升软件可维护性和扩展性。通过实例分析,展示了事件监听模式如何解决界面与业务逻辑耦合的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

[size=small]自己回寝室后想了想,总结了几点:[/size]

[size=medium][color=darkred]1.系统架构问题:程序应尽量写成“低耦合,高内聚”。[/color][/size]
[size=small]
(名词解释和理解:
耦合:不同的模块拼装到一起,产生相互依赖的关系。
高耦合:不同模块之间连接点很多,造成错综复杂的连接关系,修改程序时牵一发则动全身。
低耦合:模块层次化,我觉得理想的效果是,每一层的模块只与它上一层和下一层的模块进行耦合,同层之间的模块是没有交互的。
)[/size]


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


[size=medium][color=darkred]3.通过聊天室项目分析系统架构,讲解了事件监听模式:[/color][/size]
[size=small]
a.问题:在见面上显示聊天消息时,需要把文本域传给通信模块,在通信模块中把消息显示到文本域上,如果要对界面进行改动的话,需要改动通信模块,修改起来过于蛋疼。[/size]

[img]http://dl.iteye.com/upload/attachment/593894/0575c7b0-cef5-3fc5-b12e-12e9e891f226.jpg[/img]

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


[img]http://dl.iteye.com/upload/attachment/593896/9963ff71-23be-3c3b-8815-85f6e06dc180.jpg[/img]

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


[img]http://dl.iteye.com/upload/attachment/593900/0c568e45-b59b-3390-bab5-f47379deb144.jpg[/img]


[size=medium][color=darkred]4.OOA(面向对象分析),OIP(面向接口编程)[/color][/size]
[size=small]
还是上述模型,假设我的消息监听器就是一个Class,那么它的功能是捕捉通信模块收到的文本消息,然后显示到界面模块上。如果我要捕捉其他的消息,或者说做出不同的处理呢?如果消息监听器是个Class的话,那么我就要实现多个不同的监听器,并在通信模块中修改代码,也很蛋疼。
换用Interface,把消息监听器定义成一个Interface,那么整个模块图就成下面的样子了。[/size]


[img]http://dl.iteye.com/upload/attachment/593902/d1d59759-f976-30f6-b303-6a0966ff4e90.jpg[/img]

[size=small]这样子,我要怎么处理消息,我就怎么处理消息,只需要实现一个新的类就OK了,再也不蛋疼了。
还有一点:消息也定义成Interface,那么我要增加消息的种类只需要实现新的消息类就OK了,不必修改通信模块的代码。[/size]
[size=medium][color=darkred]5.总结:设计软件要做到“低耦合,高内聚”,理解四大关系,多用接口,先定规则再实现,根据实际情况选择相应的设计模式,理解胡老师的监听器模式[/color][/size]

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

最后再附上一个今天的小练习,简单的事件监听模式的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值