软件设计六大内功心法

本文探讨了软件设计的六大核心原则:开闭原则、里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪米特原则和接口隔离原则。这些原则旨在指导开发者如何创建可扩展、易维护的软件系统,通过实例解析了它们在实际编程中的应用,以提升软件设计的质量。
摘要由CSDN通过智能技术生成

  我一直以为,世间万事万物,都存在着某种规律性的东西,只不过,有的已经被发现,有的还在人们的探索过程中,等待被发现,软件设计亦然。其实,生活中的很多东西,是可以相通的(比如心和心)。

  不是吗?那本很有名的书《建筑的永恒之道》,正是归纳出了长久以来,在人们漫长的经历中摸索出来的有关建筑的一些规律性的东西。然而,它却不仅止于建筑,它还可以延伸至其他诸多领域。我们可以发现,很多精彩的软件设计模式,也是源于此书的思想,这也正是此书的思想光辉光彩照人的原因所在。现在,它的闻名似乎不在建筑业,而在软件业了,正所谓“失之桑榆,取之东隅”。

  好了,言归正题。软件设计的六大原则是什么呢?这也是无数软件设计“先烈”前扑后继(呵呵,说“先烈”似乎悲壮了点:-)),历经磨难而总结出来的“葵花宝典”。慢着,说“葵花宝典”似乎不太适合,改用“内功心法”吧。那么,软件设计的六大内功心法是什么呢?

  内功心法一:开闭原则

  不知为啥,一提到这个心法,便想到一扇门,可以让什么进去,而不让什么进去。当然,这绝不是“华人与狗不得入内”的那扇门(强大的中国已经不是过去的中国了,我为中国人而骄傲)。这扇门是,对扩展开放,对修改关闭。这句话的意思是,你不要动我的奶酪,你不要动我已有的东西,你可以添加新的东西给我,或者替换我的东西。由此联想到Spring中,“依赖注入”的一种实现方式:通过配置接口的实现类而注入,如果业务逻辑发生了变化,只需要提供新的实现加以替换就可以了,你不需要动她原有的东西,以免伤及无辜。

  内功心法二:里氏代换原则

  这个原则就是:在任何基类出现的地方,子类都可以出现。面向对象程序设计的一大特性是:多态。正是多态这个特性造就了很多优秀的设计模式。一般而言,基类总是更一般化的东西,比较少涉及细节以及具体实现。如果遵循此原则,我们就能更好地利用多态的特性,使用一个基类的引用(这个引用可以指向子类),大胆地调用方法,而不必过度地关心其实现细节。歪解:在任何爸爸出现的地方,儿子都可以出现。爸爸能做的事,儿子也能做,而且会做得更好、更细致、更有针对性。有时候爸爸只是告诉儿子去做什么,而怎么做是儿子自己的事情。(爸爸就是爸爸,主要职责是发号施令,呵呵)

  内功心法三:依赖倒转原则

  此原则为:要尽量依赖抽象,不依赖实现。我想熟悉Spring的同仁们应该对此原则有着更深的体会。此心法与心法二相辅相成,有异曲同工之妙。感悟:似乎上层的领导更多的依赖抽象,而底层的员工,更多的依赖实现。正是因为日常我们更多地关心实现细节,而被纷繁的细节变化所累。依此心法修炼,你就能提高层次,从实现的变更导致的烦恼和痛苦中解脱出来。

  内功心法四:合成/聚合复用原则

  很多初学武功的人,在只是学到一点皮毛之时,往往自以为已经得到武功的精髓,处处表现或找人比试。而初学面向对象程序设计的许多人,最初了解且能留下比较深印象的恐怕就是“继承”这个概念了,仿佛继承便是面向对象的精髓了。于是乎,编程时狂用继承,生成一系列像“麻辣串”似的类体系。而前人的实践经验却证明:要尽量多用合成或聚合,少用继承。这样,才能更好的应对变化,使开发出来的系统更易于维护。

     内功心法五:迪米特原则

  这个原则的主要含义为,一个实体要尽可能少与其它实体发生作用或联系。换句话说,与你无关的东西,你知道得越少越好,不要和陌生人说话。事实上,它和最少知识原则殊途同归。  

  内功心法六:接口隔离原则

  意思是说,要多创建些功能定义相对独立的小接口,避免庞大的总接口。每一个接口好比一种角色;每个角色都应该有明确和有限的职责,不该做的事不做,该做的就一定要做好。

  以上所谓的内功心法,非经长期实践修为,而不能洞明其妙也。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值