什么时开放封闭原则?
什么是依赖倒置原则?
什么是高类聚低耦合原则?
前言
一国两制: 小平同志在香港回归问题上提出了一国两制,独到之处是? 大陆的社会这一制度不能修改,而港澳
的资本主义也根深蒂固,强行修改也不合理。这种不可修改(香港的资本主义修改成社会主义),但是可以扩展的思
想。 ——开放封闭原则
概念 --开放封闭
是指软件实体(类、模块、函数等)应该可扩展,但是不可修改。
对扩展开放,对更改封闭
我们在做任何系统的时候,,都不要指望系统一开始时候就需求明确,不会在发生变化,这是不科学的,
而既然需求一定会变化,那么如何在面对需求变化时,设计的软件可以相对容易的修改,不至于说,新需求一来,
就要把这个程序推到重来。怎样 的设计才能面对需求的改变却可以保持相对稳定,从而使得系 统可以在第一个
版本之后不断的去迭代。
如何设计
设计的时候,时刻要考虑,尽量让现在这个类足够好,写好了不要去修改,如果有需求来,新增加一些类就完事
了,原来的代码能不动就不动。
史上最贴切的例子
PC大家再熟悉不过了吧,把PC电脑理解成是大的软件系统,任何部件如CPU内存、硬盘、鼠标、键盘等都可以理
解为程序中封装的类或程序集,由于PC容易插拔的方式,那么不管哪一个出现问题,都可以在不影响别的部件的前提下进
行修改或替换。
易插拔:高内聚低耦合。
开放封闭原则:内存不够只要插槽够就可以添加,硬盘不够可以用移动硬盘。
依赖倒置原则:说白了就是面向接口的编程,不要对实现编程,无论主板、CPU、内存都是针对接口设计的,如果
针对实现设计,内存就要对应到具体品牌的主板,换内存就要换主板。
即国际ISO定义一套接口标准,小米厂商按照接口实现自己的小米键盘,键盘的实现细节是复杂的,各个厂商都有
自己的实现方式(高内聚),但是键盘的接口是统一的,不管用那个厂商的键盘都可以(低耦合)。
依赖倒置原则中的倒置是什么东西?
上面说到,小米键盘坏了可以换联想的,将键盘、鼠标等视为低层模块,主板视为高层模块,即底层模块不
依赖高层模块。同理高层模块也不能依赖低层模块(倒置),他们统一依赖抽象成接口类或者接口。即所谓的依赖
倒置。
电脑是一个低耦合高内聚的东西,而收音机所有东西都焊接在一起,这严重的高耦合,一个部件坏了,基本就废了。
后记
依赖倒转其实可以说是面向对象设计的标志,用那种语言来编写并不重要,如果编写的时候都是如何针对抽象编程
而不是针对细节编程,即程序中所有的依赖关系都是终止于抽象类或者接口,那就是面向对象的设计,反之就是过
程化的设计。
参考:《大话设计模式》