我是一个JAVA初学者,以前只知道把程序写完写出来就好,再加上足够多的注解就算完成了,从不关心程序是否写的合理,更不知道什么叫设计模式,更不要说是低耦合,高内聚是什么东西,直到培训的老师讲到这,才开始找资料来看,顺便写下自己的理解;
1.低耦合
先要知道什么是耦合,耦合是元素对其他元素的依赖,连接的度量;一个元素必须在另一个元素存在时才能正常工作,或者有调用另一个元素中的方法,或者与另一个元素相关就说这两个元素耦合;像我们编写JAVA程序中的类就有如下几种情况是耦合:
1.元素B是元素A的属性,或者元素A引用了元素B的实例(这包括元素A调用的某个方法,其参数中包含元素B)
2.元素A调用了元素B的方法
3.元素A直接或间接成为元素B的子类
4.元素A是接口B的实现
耦合使得我们和代码可变性低,因为代码中的元素相耦合,使得在一个类要变的情况下其他的类也必须做出相应的变动,这使我们的代码的重复利用变得很麻烦,有时甚至一点小改动而导致代码要重头写;
正是耦合的不足,才强调要低耦合,元素要完全独立是不可能的,我们只能从中找到一个平衡点,尽量和使我们的代码耦合度低,我觉得在写代码时可以多使用接口而不是继承,因为继承就是一种耦合,如果子类A继承了父类B,不论是直接或间接的继承,子类A都必将依赖父类B;子类A必须使用在存在父类B的环境中,父类B不存在子类A就不能使用,这样将影响子类A的可移植性。一旦父类B发生任何变更,更改或去掉一个函数名,或者改变一个函数的参数,都将导致子类A不得不变更,甚至重写。假如父类B的子类数十上百个,甚至贯穿这个项目各个模块,这样的变更是灾难性的;这只是一种不成熟的方法,真正要达到高手的地步,还是要多积累经验,所谓熟能生巧嘛!
2.高内聚
内聚:一个模块内各个元素彼此结合的紧密程度;与耦合相反,内聚是在一个模块中,而耦合是强调整个项目中各模块的之间的关系;在一个模块中各个元素结合的越紧密,代码质量越高;在程序设置中高内聚就是要程序模块内、类内要保持高度的联系,也就是属性间、方法间、属性方法间要高度紧密、不能脱离联系。要么方法中应该存在某些属性的参数,要么属性中要返回方法的结果,这样能够充分调用代码,减少代码的冗余。
<!--EndFragment-->
- 大小: 6 KB
分享到:
相关推荐
软件系统的设计思想和原则、设计 方法、系统架构及体系结构、设计模式、运行平台、 开发工具等方面进行综合考虑和合理取舍。
《ASP.NET设计模式》内容简介:这本独特的书通过强调松散耦合、高内聚的ASPNET Web应用程序架构设计,使得人们对高质量ASP.NET应用程序结构的认识更进一步。每一章内容分别解决企业ASP.NET应用程序中的一个层,同时...
1.3.1 高内聚、低耦合 1.3.2 面向抽象编程 1.3.3 多用组合少用继承 1.3.4 “开-闭”原则 1.4 设计模式概述 1.4.1 什么是设计模式 1.4.2 为什么需要设计模式 1.4.3 如何正确应用设计模式 1.5 设计模式的分类 ...
按照设计模式中“高内聚、低耦合”的原则,设计出一种标图系统的整体结构,并以Prototype, Template Method, Observer, Command, Composite和Singleton六种具体模式为例,详细阐述了它们在系统功能实现过程中的应用...
面向对象系统的分析和设计实际上追求的就是两点,一是高内聚(Cohesion),而是低耦合(Coupling)。这也是我们软件设计所准求的,因此无论是OO中的封装、继承、多态,还是我们的设计模式的原则和实例都是在为了这两...
模块间低耦合高内聚,可作为整体也可单独提供服务。对各模块提供了单元测试。 网络io使用epoll LT触发模式,采用主从reactor设计。提供同步和异步日志,内存池使用哈希表、链表结合的管理,线程池支持任意任务...
多 迭代子模式 个对象聚在一起形成的总体称之为聚集, 聚集对象是能够包容一组对象的容器对象。 迭代 子 模式将迭代逻辑封装到一个独立的子对象中, 从而与聚集本身隔开。 迭代子模式简化了聚集 的界面。每一个聚集...
设计模式精解-GoF-23种设计模式解析,C++源码精解,创建型模式5种,结构性模式7种,行为模式11种。面向对象系统的分析和设计实际上追求的就是两点,一是高内聚(Cohesion),而是低耦合(Coupling)
所有的设计模式的共同目标都是:高内聚,低耦合。 我们在日常的开发当中,都或多或少地接触了设计模式,但是很多时候不知道自己使用了哪种设计模式或者说该使用何种设计模式。其实我个人觉得哈,咱们用不着纠结该用...
学习设计模式,了解设计模式,使自己的程序,一是高内聚(Cohesion),而是低耦合(Coupling)
1.什么是设计模式? 2.设计模式是指在软件开发中,经过验证的,用于解决在特定环境下、重复出现的、特定问题的解决方案。 3.说出你所知道的设计模式?...11.为什么类要高内聚低耦合? 12.目的是使程序模块
java模式之备忘录模式主要用于保存进度状态。保证高内聚低耦合。
2.4HighCohesion(高内聚) 15 2.5Controller(控制器) 17 2.6Polymorphism(多态) 18 2.7PureFabrication(纯虚构) 19 2.8Indirection(间接) 20 2.9ProtectedVariations(受保护变化) 21 第3章GoF-...
2.4HighCohesion(高内聚) 15 2.5Controller(控制器) 17 2.6Polymorphism(多态) 18 2.7PureFabrication(纯虚构) 19 2.8Indirection(间接) 20 2.9ProtectedVariations(受保护变化) 21 第3章GoF-...
(2) 合理的数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性,尽量保证低耦合,高内聚。 (3) 采用封装的思想,根据模块的不同情况进行类的...
一般情况下,我们为了提高内聚和松耦合,经常会使用多态来处理一些问题。抽象出一些类的公共接口作为抽象基类或者接口。这 样的话,我们将会面临一个挑战。在每次使用子类的时候,我们不得不经常使用base* = New ...
开闭原则、面向抽象的原则(依赖倒转原则)、多用组合少用继承原则、高内聚- 低耦合原则。 观察者模式的推拉有什么不同?使用场景 推,具体主题将变化后的数据全部交给具体观察者。场景:当具体主题认为具体观察者 ...