美文网首页
JAVA设计模式原则

JAVA设计模式原则

作者: 游侠_6fb7 | 来源:发表于2020-07-07 15:37 被阅读0次

    一、Solid原则

    介绍
    设计模式中的SOLID原则,分别是单一原则、开闭原则、里氏替换原则、接口隔离原则、依赖倒置原则。前辈们总结出来的,遵循五大原则可以使程序解决紧耦合,更加健壮。

    • Single Responsibility Principle:单一职责原则
    • Open Closed Principle:开闭原则
    • Liskov Substitution Principle:里氏替换原则
    • Interface Segregation Principle:接口隔离原则
    • Dependence Inversion Principle:依赖倒置原则

    二、单一职责原则(Single Responsibility Principle)

    1. 单一职责的定义:应该有且只有一个原因引起类的变更。换句话说就是一个接口只做一件事,即一个职责一个接口。但是困难的是划分职责时并没有一个标准,最终都是需要从实际的项目去考虑。我们在设计的时候,尽量单一,然后对于其实现类就要多方面的考虑。不能死套单一职责原则,否则会增加很多类,给维护带来不便。

    2. 一个类(或者 大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且如果一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作。

    3. 类的职责主要包括两个方面:数据职责和行为职责,数据职责通过其属性来体现,而行为职责通过其方法来体现。

    4. 单一职责原则是实现 高内聚、低耦合 的指导方针,需要设计人员发现类的不同职责并将其分离,不能因为它能做其它工作,而全部放在类里面

    三、开闭原则(Open Closed Principle)

    1. 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简单来说:就是为了使程序的扩展性好,易于维护和升级。

    2. 软件实体应该对扩展开放,对修改关闭,即实体应当通过扩展实现变化,而不是修改代码实现变化
      什么是软件实体,项目或软件中按照一定逻辑规划划分的模块
      抽象 类
      方法

    3. 如:面向接口(抽象类)编程,接口保持不变,具体实现的类,方法可变,达到可扩展

    四、里氏替换原则( Liskov Substitution Principle)

    1. 里氏替换原则面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。
      LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。
      里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。
    2. 里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义:
      子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
      子类中可以增加自己特有的方法。
      当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
      当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

    五、接口隔离原则(Interface Segregation Principle)

    1. 这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。在开发过程当中回尽量地去降低依赖,降低耦合。
    2. 用多个接口组合,避免多个职责的功能使用同一个接口

    六、依赖倒置原则(Dependence Inversion Principle)

    1. 这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于具体。
      java中抽象指接口或抽象类,两者都不能直接被实例化的;细节就是实现类,实现接口或者集成抽象类而产生的也就细节,也就是可以可以加上一个关键字new产生的对象。高层模块就是调用端,低层模块就是具体实现类。
      依赖倒置原则在java中表现就是,模块间依赖通过抽象发生,实现类之间不发生直接依赖关系,其依赖关系是通过接口或者抽象类产生的。如果类与类直接依赖细节,那么就会直接耦合。如此一来当修改时,就会同时修改依赖者代码,这样限制了可拓展性。

    相关文章

      网友评论

          本文标题:JAVA设计模式原则

          本文链接:https://www.haomeiwen.com/subject/usycghtx.html