面向对象的六原则一法则

面向对象的六原则一法则

单一职责法则:
一个类只做它该做的事。
单一职责法则想表达的意思就是“高内聚”,写代码的终极原则只有 六个字“高内聚,低耦合”,所谓的高内聚就是一个代码模块只完成一项功能,在面向对象中,如果能让一个类完成它该做的事情,而不涉及其他领域就是践行了高内聚的原则,这个类就只有单一的职责。另一个是模块化,一个好的软件系统,它里面的每个功能模块都应该是可以轻易拿到其他系统中使用的 ,这样才能实现软件服用的目标。

开闭原则
软件实体应当对扩展开放,对修改关闭。
在理想状态下,当我们需要对一个软件增加新的功能时,只需要从原来的类中派生出一些新的类就可以,不需要对原来的任何一行代码进行修改。要做到开闭有两个要点:1.抽象是关键:一个系统如果没有抽象类或者接口,那么这个系统就没有扩展点;2.封装可变性:将系统中的各种可变因素封装到一个继承结构中,如果多个可变元素混杂在一起,系统将变得复杂而混乱。

面向接口编程:
该原则说的直白和具体一点就是声明方法的参数类型,方法的返回类型,变量的引用类型时,尽量的使用抽象类型而不是具体类型,因为抽象类型可以被他任意一个子类所代替。

里氏替换原则:
任何时候都可以用子类替换掉父类;
简单地说,就是能用父类的地方就一定能够用子类类型。里氏替换原则可以检查继承关系是否合理,如果一个继承关系违背了里氏替换原则,那么这个继承关系肯定是错误的,需要进行代码重构。需要注意的是:子类一定是增加了父类的能力而不是减少父类的能力,因为子类的能力要比父类的能力要多,把能力多的对象当作能力少的对象来用当然是没有问题的。

接口隔离原则:
接口要小而专,不能大而全。
臃肿的接口是对接口的污染,既然接口表示能力,那么接口只应该表示一种能力,接口也应该是高内聚的。
例如,刀枪剑戟,斧钺钩叉应该设计为八个接口,每个接口实现一个功能,而不是将这些功能写在一个接口中,毕竟不是每个人都能拥有这些能力,将他们分开,那个人会那个功能还需要实现该接口即可,毕竟java中是支持多实现的。Java中的接口代表能力,代表约定,代表角色,能否正确使用接口一定是编程水平高低的重要标识。

合成聚合复用原则:
优先使用聚合或者合成关系复用代码。
通过继承来复用代码是面向对象程序设计中被滥用得最多的东西了。类与类之间有三种关系,分别为Is-A关系,Has-A关系和Use-A关系,分别代表继承,关联和依赖。其中,关联关系根据其关联程度可以进一步划分为关联,聚合和合成,但是说白了都是Has-A关系,合成聚合复用原则想表达的是优先考虑Has-A关系而不是Is-A关系复用代码。
记住:任何时候都不要继承工具类,工具是用来使用的而不是用来继承的。

迪米特法则:

迪米特法则又叫最少知识原则,一个对象应该对其他对象有尽可能少的了解。目的是为了减少系统的耦合度和复杂度。
发布了10 篇原创文章 · 获赞 0 · 访问量 118

猜你喜欢

转载自blog.csdn.net/DONG__CHI/article/details/103896238