关于OOP的基本原则

我们百度一下OOP5大原则:

1、单一职责原则:杯子就是杯子(后面解释)

2、李氏替换原则:鱼生下来就会游泳

3、迪米特原则:自动档汽车

5、依赖倒置原则:律师学法

这5大原则里,个人理解核心的是依赖倒置原则、迪米特原则和单一职责原则,其中:单一职责原则在说一个类最好只有一个职责,就比如杯子就是杯子,用来喝水,当然你可以让它变成电热杯,既可以烧水,也可以喝水。甚至你可以给它更多功能,比如加个旋转电机和刀片,变成研磨杯。这时问题就要来了,有一天你拿它研磨,结果电机坏了不能研磨了。你要修理,就要考虑还有加热装置存在这个杯子里,这两个地方也许毫无关联,如果有关联,还要考虑修理电机的时候,可别碰坏了加热装置,可是,我们的杯子一开始就是一个喝水杯,非要杂七杂八加进这么多功能来。一个电水壶和一个干磨机哪个不比这个杯子做的好呢?这里我又意淫了,现在关于未来IT技术的发展有两种思路,一个是微软,说要让平板可以当台式机用、还可以打电话、玩游戏,什么都做;另一个是苹果,主张让手机做手机的事,平板做平板的事,台式机做台式机的事。无意评论孰优孰劣,只想说苹果的思路跟OOP基本原则是多么的相似啊。

依赖倒置原则,说的是顶层的设计最好不要依赖底层的实现,如果过渡依赖底层的话,一旦底层做出改动势必会影响顶层。这里举例一个律师要学法律,他不管怎么理解,所有的法律都要基于我们公民的基本权利:宪法来编写,如果底层法律跟宪法有冲突,一定是要修改底层法律来靠拢宪法。可以说宪法是祖宗,其它法律是儿孙。所以律师要想把法律吃透,就要一切都在宪法这个大框架下去理解其它各部法律才行(这个例子,,呵呵,不是十分恰当)。

迪米特原则就像自动档汽车,想开汽车,不需要学习什么发动机转速、离合器半离合这些东东,就记得踩油门就走,踩刹车就停,档位只需要记住低速档和高速档就行了,多简单,编程序也要考虑这样去做,一个类只应该暴露它必须的方法即可,别的类想调用它不需要知道这个类其它具体的细节。这也是为了简化编程而积累的方法。

李氏替换就不用说了,父类的方法必然都要在子类里被继承,这在所有的面向对象IDE里几乎都直接实现了吧。

你可能感兴趣的:(关于OOP的基本原则)