初步简单理解面向对象的六大原则

在这里自说自话一波,六大原则之间总感觉有重合的地方。

单一职责原则

就是一个类要看着他的文档规范或者名字开发,他叫桌子就不能把椅子的东西写进去,就是要做同类型符合这个类名字的事情。具体可以看看斯坦福的软件工程课程 点这里。

准确解释是,就一个类而言,应该仅有一个引起它变化的原因。

里氏替换原则

任何父类出现的地方都可以用子类代替。

网上大多数的解释是四条,

1.子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。

2.子类中可以增加自己特有的方法。

3.当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。

4.当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父

但就我目前的水平,我的理解还是,只要你注意这个类或者方法是怎么描述的,如果描述足够准确,在描述范围内写就好了。比如,父类文档要求你返回一个object,那么子类可以是String,Long什么的,但是要求你返回String,你就不能返回object。

依赖导致原则:

个人觉得这句话应该记住。

高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

用接口减弱代码之间的耦合性。利用好java的特性。

多用抽象的接口来描述相同的动作,降低实现这个动作的人和物之间的耦合度

总的来说就是面向接口编程。

接口隔离原则:

也就是接口最小原则,一个接口里面方法要简单。其实和单一职责原则挺像的。

接口尽量要细分,不同功能的方法不要写在一个接口里面。

迪米特法则:

对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。

开闭原则

写完了代码,要保证的是你的代码能扩展,但是尽量不要修改。


感觉这六大原则之间是互相补充,互相依赖。总有说不清道不明的关系在里面。开发的过程中一定要好好体会着六大原则,背熟是没有意义的,要把他们融入到你的代码风格中去。背熟是会编码的一个必要条件。要我面试,我肯定先问这个,这个都不熟悉,说明对代码的理解还是有欠缺的。

你可能感兴趣的:(初步简单理解面向对象的六大原则)