设计模式杂谈

一、“舍离断”SOLID的历史
根据WIKI和谷歌搜索,早在1995年,Bob大叔就在新闻组中提出了单职、开闭、里氏替换、接口隔离和依赖倒置,并且在2006年的《C#敏捷原则、模式和实践》中对其进行了完整阐述。然后Michael Feathers大神将它缩写成方便记忆的SOLID。SOLID是面向对象编程和设计的五项基本原则。使用SOLID原则,能提供管理依赖的准则化方式,并且夯实了设计模式的面向对象基础,使得代码变得灵活、可靠和重用。
对于SOLID的初步理解,就是每个原则各一句话的阐释,先通读一遍吧,至于如何理解其真实涵义,我们先“延时加载”一下。
SRP: 单一职责原则,一个类有且仅有一个导致其修改的原因。
OCP:开放封闭原则,软件实体应该对扩展开放,而对修改封闭。
LSP: 里氏替换原则,继承类的实例在他们的父类类型上,必须可以相互替换。
ISP: 接口隔离原则 ,为特定客户提供最小的精细化管理的接口。
DIP: 依赖倒置原则 ,实现依赖于抽象,而不是抽象依赖于实现。

三、总结
舍离断:“舍去多余的事物;脱离对物品的执着;断绝不需要的东西”。
SRP教会我们内修其身,舍去多余的概念,保持一份纯真。SRP是最简单的原则,但是“有几人能不纠缠”。如果五项基本原则中,选择最重要的,那么我还是选择SRP,你可以忘记其他原则,但你不能忘记SRP原则。有了SRP原则,那就是有了把程序媛妹子的利器。
OCP教会我们看穿事物的本质,提取其抽象。以抽象之不变应付具体之万变。脱离并看穿对具体实现的执着,以抽象来提升自己的视角。
LSP教会我们要“知行合一”、“ 言行一致”,“ 知”乃抽象的约定,“行”乃具体的行为。既然说了“能飞”,那就不能“装聋作哑或者事出有因说飞不了”。
ISP教会我们要对外接口也要职责单一,要为不同客户提供不同的最小化接口。实际上这个在安全考量中,就是权限最小化原则的一种体现。
DIP则是在子系统内部分层时,如果需要在不同层次之间提供扩展能力,各层之间必须都依赖于彼此的抽象,而不是依赖于具体的实现。
舍弃多种职责,内修自身;构建继承层次结构,提供灵活的扩展能力;父子继承关系有一说一不含糊;脱离对具体事务的执着,看到其本质的抽象。抽象也要保持单纯,一种客户提供一种抽象,彼此隔离。
“舍去什么得自然,出离什么可心安,什么又可以斩断,自观,自观,自观,自观,不坐仙山,不坐禅”。

猜你喜欢

转载自hellogood.iteye.com/blog/2342866