博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于程序高内聚低耦合的思考
阅读量:5088 次
发布时间:2019-06-13

本文共 1571 字,大约阅读时间需要 5 分钟。

  高内聚低耦合

  这是自从大一学java以来一直遇见的专业‘术语’,但一直没有感觉到有什么重要性,可能是还没有进入工业界参加工业大生产的原因。但是近来越来越感觉到工业界的设计思想的核心就是两个字:解耦。

基本学过的框架和技术设计的目的都是为了解耦,比如jsp等struts等的标签技术将jsp页面的java代码解放出来,达到的解耦效果,虽然狭隘 的看,处理标签幕后的java代码要比直接书写java代码要多一些,但一旦把幕后代码设计成jar包来供别人使用则达到了一劳永逸的效果。

---------------------------------------------由此看出低耦合的效果之一是达到了代码的高度重用------------------------

单独达到了代码重用这一个目的就值得让人振奋!大量重复的劳动是让程序员称为码农 的根本原因。

当然struts将jsp中的java代码解耦分离成action控制器,不仅仅可以让大量action控制器去处理许多相同的请求已达到代码重用的目的,而且让本身各类代码混杂于一身的jsp稍稍整洁了一点,对于jsp页面一眼看过去真的是杂乱:各种标签,各种java代码,还可以混杂js等脚本,很不利于维护,风格就是一个字:乱

----------------------------------------------由此看出低耦合的效果之二是达到了分层管理减少代码污染--------------

既然struts把jsp的controler和view给分离了,就达到了分层管理的好处,好,那么就继续分吧,于是struts的控制器坚决不再涉及业务逻辑代码和持久化代码,他自己也就只负责接受客户端请求和响应结果,处理请求的任务就交给了service服务层,当然service层又处理业务有要和数据库打交道便又显得有些乱了,于是又分离出持久层dao,就是传说中的mvc的model层咯,这时显然层次多了很清晰,但各个层的交互如何处理?层次之间又涉及到了敏感话题:耦合度。为了把各个层的耦合度降到最低,spring应用而生咯,spring的出现使得使得各个层次间的耦合降到最低,也就是只在接口处耦合,也就是说spring带来了一种编程风格:面向接口编程。有了接口,spring这个优秀的单例工厂就可以负责把各个层次的组件给造出来,然后让各个层次只在接口处耦合

可以说面向接口编程使耦合降到最低,但这样能达到什么效果呢?

举一个实例来说明:大一刚自学完java时就跃跃欲试,写一些坦克大战,安卓贪吃蛇什么的一些小游戏,感觉很有成就感,但在设计时常常遇到这样的情况:A类想访问B类的资源,于是在A类中new一个B类,然后,B类又想访问A类的资源,于是在B类中再new一个A类。然后问题就来了,在new A类的时候要先new一个B类填进去,但在new B类的时候又需要用到A类,这就遇到著名的现有蛋还是先有鸡的问题,而且这new是很可怕的,试想虚拟机中new了很多A类的实例和很多B类的实例,性能可能会明显下降。当时肯定不会顾及性能问题,能运行就ok了,再说也感觉不到,因为现在的内存和cup都是能牛逼的了。当时的处理就是简单的做个工具类,把一些相互访问的资源放到工具类里做成静态的属性和方法,当时感觉到工具类是如此的牛逼啊,现在看来这不就是解耦么,把耦合在一起的资源给分离出来。

----------------------------------------------------由此看来低耦合的效果之三是避免循环依赖-----------------------------

转载于:https://www.cnblogs.com/charlie-badegg/p/3341071.html

你可能感兴趣的文章
ASP.NET MVC 自定义错误页面心得
查看>>
Shellinabox安装及使用教程
查看>>
hdu 2066 一个人的旅行(裸dijkstra)
查看>>
Rabbitmq 安装&启动
查看>>
HDU-3746-KMP理解失配
查看>>
实验报告 三
查看>>
买房子或租房子的一些科学理论
查看>>
网络文章收集整理,前端面试题导航
查看>>
PowerDesigner(PowerDesigner15.1.0.2850)下载、安装以及破解
查看>>
推荐系统遇上深度学习
查看>>
Struts 有哪些经常使用标签库
查看>>
Win32 Windows编程 十二
查看>>
作为一个新人,如何学习嵌入式Linux?
查看>>
他毕业两年,博客一年,时间
查看>>
登录模块
查看>>
推荐:想了解一个项目完整测试流程,看这篇文章就OK了
查看>>
Java中常见的排序方式-选择排序(升序)
查看>>
前端性能优化之数据存取(二)
查看>>
[bzoj4889] [Tjoi2017]不勤劳的图书管理员
查看>>
Effective Objective-C 2.0
查看>>