程序设计中,为什么要解耦359
发布网友
发布时间:2023-10-12 15:42
我来回答
共3个回答
热心网友
时间:2024-10-23 03:15
此文转载的。觉得非常精辟。希望对正在学面向对像设计的你有所帮助,总的说来。有这么多设计模式,要用面向对像。都是为了解耦。力在降低各模块的依赖,提高重用。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 在程序设计过程中,最头痛的不是逻辑的编写过程,更不是算法的设计,最头痛的是如何设计出一个容易维护,扩展性好的东西。而耦合问题是最令人烦躁的,它的存在很多人发现不了,所以往往无从入手,真是有苦自己知了,呵呵。以下是我的经验之谈。我通过例子来体现耦合问题的影响。第一个例子: 在开发游戏的时候,有很多实体类,通常属于一条相同的生产线,如地形:土地,石块,草地,雪地,沼泽,等,具有相同特征而功能不同的对象,新手们,一般是在程序的某个地方,默默地new出这些应用到的对象,恩,一个,两个,三个,慢慢你会发现程序中不断出现新对象,如果存在10对象实体,而对象的提供了5个接口函数,也就是,读写操作,在程序中出现了几十次,这时,我不要这个对象了,换成其他了,那你是不是要改几十处地方?恩,问题就是这里了,没有一个抽象层面,必然会导致维护困难,当对象扩大化到100个,这是一个维护噩梦,当然,单单一个抽象层面是无法解决new实体对象的事实的,这个是令人头痛的问题,管理对象的生产是一个很重要的模块,这里对于某些高级语言,如C++,唯一比较好缓解的是工厂模式中的工厂方法,我比较喜欢用这个模式去管理对象,简单工厂就不要学了,没什么实际意义,而我可以很明确告诉你,第一个带你入门,第一个让你打开眼界的模式绝对是工厂方法模式,如果真想学学模式,请先研究工厂方法,其使用的意义在于把对象的生成延迟到子类,而统一使用接口去管理对象的初始化,把变化点分离出调用端,这里我只能告诉你为什么要用设计模式,什么情况下要用,理不理解就靠你自己的实际经验和悟性了,本人悟性不高,当时在学习设计模式的时候,看了很多次依然没有领悟到工厂模式的奥妙,直至代码量和项目经验不断地增加才顿悟出过中道理,确实是很难用文字来表达,不过以上的例子足够证明它的意义,根源都是为了解耦。第二个例子: 由于我一直都在开发游戏,所以所举得例子不免都和游戏有关,这个例子,如果你写过一个完整的游戏,必然有所了解,游戏总会有界面,而其中比较典型的界面是,菜单界面,菜单里有按钮,对吧?恩,这个问题,我当时设计就考虑,菜单类和按钮类究竟是分开还是合在一起?想来想去,由于当时设计观念没到家,最后把它们合在一起了,这种做法绝对是不好的,为什么呢?我们不要从概念上入手解释,通俗的*就是,菜单和按钮的对应关系是一对多,对吧?没有一种固定的关系,有可能1对2,1对3,1对10等等,所以把它们写在一起,是很僵化的,就单凭这种证明就可以发现,它们要分开,而它们最后的表现是合在一起,通过组合的方式,把按钮的抽象层面注入到菜单里面,就可以动态地生成完整的菜单,所谓的组合方式,不就是,菜单里面有一个存放按钮引用的集合,希望你明白我所说的,具体我就不解释了。 结语:我认为这里是全篇文章最重要的,比任何所谓的分层理论都重要,因为它更通俗,更实际,很多人,并不是面向对象学得不好,但总觉得差什么,我也经历过,面向对象,封装,多态,继承,学过的人都知道,都认为自己了解了,其实不然,很多很奇妙的因素,让你误解了,大部分的人认为封装很简单,其实大错特错了,封装是最奇妙的,也是最难用好的。只要你记住以下原则,必然能很好地用好封装,成员尽量使用protected和private,不要去使用public.尽量不要提供给外部对成员属性getter的接口,意思就是不要暴露成员,为什么要这样呢?很简单,暴露成员属性必然会导致自身业务的外泄,业务外泄,会导致,类之间的无谓耦合,如A类有成员a,而程序需要对a数据改变,而你提供一个B类可以访问a成员的getter接口,B类在其自身对a修改,看上去没什么,实际上,就是类耦合,对a的修改是类A的职务,由于习惯的提供getter,导致了,在写类B的时候错误地添加了修改业务,使类A内聚能力降低,程序逐步庞大必然会越发明显,真所谓牵一发动全身,小程序确实是很难看出问题所在。就写那么多,本人愚见,希望对你有帮助。
热心网友
时间:2024-10-23 03:16
解耦
[词典] [化] decoupling;
[例句]实现了对具有任意延时结构的多变量系统的解耦控制。
It realizes self-tuning decoupling control for multivariable systems with arbitary delay time structure.
热心网友
时间:2024-10-23 03:16
高内聚,低耦合有助于程序的维护,单独的功能做成独立模块,整个系统由一个个模块通过接口组合而成,如果需要更新或者修改局部功能,只要修改一个接口的一个模块,不影响整个系统其他功能使用
程序设计中,为什么要解耦
有这么多设计模式,要用面向对像。都是为了解耦。力在降低各模块的依赖,提高重用。>>> 在程序设计过程中,最头痛的不是逻辑的编写过程,更不是算法的设计,最头痛的是如何设计出一个容易维护,扩展性好的东西。而耦合问题是最令人烦躁的,它的存在很多人发现不了,所以往往无从入手,真是有苦自己知...
ZESTRON表界面分析
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸等关键领域,还通过高精度仪器如固体表面Zeta电位分析仪等,确保数据准确可靠。这些分析手段对于优化产品配方、改进生产工艺、预防失效问题等具有重要意义,是我们不断提升产品性能与质量的重要工具。表面污染分析包括评估表面上存在的颗粒、残留物或物质。通过利用显微镜、光谱学和色谱法等技术,分析人员可以识别和表征污染物,以确定其成分和来源。这种分析在电子、制药和制造等各个行业中至关重要,以确保产品质量、性能和安全性。了解表面...
《c#程序设计》中的“解耦”是什么意思
解耦实际上是说的是降低代码的耦合度。解耦的方法有很多。类内部与类外部的依赖过多,就有可能代码的耦合度很高。尽量的把类设计的更独立一点,专业词汇叫内聚。这个东西代码写多了自然就明白了。
编程思想里面,何谓解耦?
解耦不仅是为了优化现有系统,更是为了适应未来的挑战。在设计过程中,始终追求早期的简化和最小化,尊重设计复杂性,借鉴MVC等高级设计模式,以实现系统的可持续扩展和优化。
通俗地理解耦合、解耦这两个概念
解耦则是降低耦合度的过程,通过分离和减少模块间不必要的依赖,让代码更加模块化和灵活。比如,将上述的平均值和标准差函数分开,这样在需要改变数据处理方式时,只需改动对应部分,不会影响整体结构。总的来说,解耦是优化系统结构,提高可维护性和扩展性的关键步骤。
程序设计中耦合性高有什么坏处
解耦,字面意思就是解除耦合关系。我的理解是:软件设计中的“耦合”指,两个功能函数之间的依赖程度。比如,你设计的一个程序,需要你编写10个功能函数来实现。在内容耦合的情形,所访问模块的任何变更,或者用不同的编译器对它再编译,都会造成程序出错。好在大多数高级程序设计语言已经设计成不允许出现...
未知输入解耦是什么意思
解耦是一种软件设计思想,其主要目的是将程序模块之间的耦合度降到最小。这种思想的出发点是,模块之间的依赖会造成软件的脆弱性、可维护性和可重用性变差。因此,解耦的重要性不容忽视。未知输入解耦是指设计系统时,考虑到可能的未知输入,从而使系统在遇到不可预测的输入时,仍能继续正常工作。这种设计...
高耦合好还是低耦合好
在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因 此对象的设计应使类和构件之间的耦合最小。解耦,字面意思就是解除耦合关系。在软件工程中,降低耦合度即可以理解为解耦,模块间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,但可以通过一些现有的...
高耦合好还是低耦合好
2、高内聚意思就是支持主体正常运行的各个模块相对独立,相互之间没啥关联,各司其职。比如一台电脑主机,由机箱,CPU,主板,内存,显卡,电源各种部件组成,大家各做各的事有自己的职责,互不干涉,一起支撑主机的运行。3、高内聚低耦合,是软件工程中的概念,是判断软件设计好坏的标准,主要用于程序的...
一种解耦的计算机体系结构
在死锁方面,解耦体系结构中,如果一条指令从空队列中取数或向满队列中存数,会导致阻塞。然而,通过交织指令流,可以避免死锁的发生,确保程序的正常执行。总的来说,这篇论文提出的一种访存/执行解耦的计算机体系结构,通过将访存和执行分离,显著提高了标量运算的性能,展示了硬件设计中“解耦”思想的...
解耦是什么意思?
数学中解耦是指使含有多个变量的数学方程变成能够用单个变量表示的方程组,即变量不再同时共同直接影响一个方程的结果,从而简化分析计算 选择适当的控制规律将一个多变量系统化为多个独立的单变量系统的控制问题。在解耦控制问题中,基本目标是设计一个控制装置,使构成的多变量控制系统的每个输出变量仅由一...