设计模式—七大原则

设计模式的目的

设计模式是为了解决程序的耦合性、内聚性、以及可维护性、可扩展性、重用性、灵活性。
(1)代码的重用性:相同功能的代码,不用多次编写。
(2)可读性:编程规范性,便于其他程序员的阅读和理解。
(3)可扩展性:当需要增加新的功能时,非常的方便。
(4)可靠性:当那个我们增加新的功能后,对原来的功能没有影响。
使程序呈现高内聚,低耦合的特性。

单一职责原则:

  对类来说,一个类应该指负责一项职责,如类a负责两个不同的职责:职责1,职责2.当职责1的需求变更而改变a时,可能造成职责2的执行错误,所以需要将类a的粒度分解为a1,a2。
注意事项、细节:
  1)降低类的复杂度,一个类指负责一个职责。
  2)提高类的可读性,可维护性。
  3)降低变更引起的风险。
  4)通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类方法数量足够少,可以在方法级别保持单一职责原则。

接口隔离原则:

  客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。

依赖倒转原则:

  1)高层模块不应该依赖底层模块,二者都应该依赖其抽象。
  2)抽象不应该依赖细节,细节应该依赖抽象。
  3)依赖倒转(倒置)的中心思想时面向接口编程。
  4)依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多,以抽象为基础搭建的架构比以细节为基础的的架构要稳定的多。在java中,抽象指的是接口或者抽象类,细节指的就是实体类。
  5)使用接口或者抽象类的目的是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。
依赖倒转的三种传递方式:

1)接口传递。2)构造方法传递。3)setter方式传递
注意事项和细节:
  1)底层模块尽量都要有抽象类或者接口,或者两者都有,程序稳定性更好。
  2)变量的声明类型尽量是抽象类或者接口,这样我们的biand应用和实际对象间,就存在一个缓冲层,利于程序扩展和优化
  3)继承是遵循里氏替换原则

里氏替换原则:

1)如果每个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有对象o1都代换成o2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。换句话说,所有引用基类的地方必须能透明地使用其子类的对象。
2)使用继承时,遵循里氏替换原则,在子类中尽量不要重写父类的方法。
3)里氏替换原则告诉我们,继承实际上让两个类耦合性增强了,在适当情况下,可以通过聚合,依赖,组合来解决问题。

开闭原则【OCP原则】(!!核心):

  1)一个软件实体如类,模块和函数应该对扩展开放(提供方),对修改关闭(使用方)。用抽象构建框架,用实现扩展细节。
  2)当软件需要变化的时候,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。

迪米特法则:

  1)一个对象应该与其他对象保持最少的了解。(一个软件实体应该尽可能少的实体发生作用)
  2)类与类关系越密切,耦合度越大。
  3)迪米特法则(Demeter Principle)又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的public方法,不对外泄露任何信息。
  4)迪米特法则还有个更简单的定义:只与直接朋友通信。

  *直接的朋友:每个对象都会与其他对象有耦合关系,只要两个对象之间有耦合关系,我们就说这两个对象之间是朋友关系。耦合的方式有很多,依赖,关联,组合,聚合等,其中,我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友,而出现在局部变量中的类不是直接朋友。也就是说,陌生的类最好不要以局部变量的形式出现在类的内部。
注意事项和细节:
  1)迪米特法则的核心是降低类之间的耦合。
  2)但是注意:由于每个类都减少了不必要的依赖,因此迪米特法则只是要求降低类间(对象间)耦合关系,并不是要求完全没有依赖关系。

合成复用原则:

  1)原则是尽量使用组合/合成/聚成的方式(对象组合),而不是使用继承。

设计原则的核心思想:

  1)找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起。

  2)针对接口编程,而不是针对实现编程。

  3)为了交互对象之间的松耦合设计而努力。

原文地址:https://www.cnblogs.com/wudidamowang666/p/11437494.html

时间: 2024-08-02 12:12:16

设计模式—七大原则的相关文章

设计模式七大原则(一)开闭原则

设计模式七大原则--开闭原则 1.1 定义: 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. 用抽象构建框架,用实体扩展细节. 1.2 优点: 提高软件系统的可复用性及可维护性. 1.3 问题由来: 在软件的生命周期中,因为变化.升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码进过重新测试. 1.4 解决方案: 当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化. 实现

图解Java设计模式之设计模式七大原则

图解Java设计模式之设计模式七大原则 2.1 设计模式的目的 2.2 设计模式七大原则 2.3 单一职责原则 2.3.1 基本介绍 2.3.2 应用实例 2.4 接口隔离原则(Interface Segregation Principle) 2.4.1 基本介绍 2.4.2 应用实例 2.5 依赖倒转原则 2.5.1 基本介绍 2.5.2 应用实例 2.6 里氏替换原则 2.6.1 OO中的继承性的思考和说明 2.6.2 基本介绍 2.6.3 一个程序引出的问题和思考 2.6.4 解决方法 2

软件设计模式七大原则的含义附举例说明

设计模式(面向对象)有七大原则,分别是: 1.开放-封闭原则 2.单一职责原则 3.依赖倒转原则 4.迪米特法则(也称为最小知识原则) 5.接口隔离原则 6.合成/聚合复用原则 7.里氏代换原则 开放-封闭原则具有理想主义的色彩,他是面向对象设计的终极目标.其他几条则可以看做是开放-封闭原则的实现方法.设计模式就是实现了这些原则,从而达到了代码复用,增加可维护性的目的. 一.开放-封闭原则 概念:一个软件实体如类.模块和函数应该对扩展开放,对修改关闭.模块应该尽量在不修改原代码的情况下进行扩展.

设计模式七大原则之开闭原则学习

这是在我大学学习过程中,老师给我讲的第一个设计原则:开闭原则,至今为止,我只记住了一句话:程序对修改关闭,对扩展开放.接下来得好好理解一下这句话 一.开闭原则 开闭原则是编程中最基础.最重要的设计原则 基本介绍: (1)一个软件实体如类,模块和函数应该对扩展开放(对于提供方来说),对修改关闭(对于使用方来说).用抽象构建框架,用实现扩展细节. (2)当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化. (3)编程中遵循其它原则,以及使用设计模式的目的就是遵

设计模式七大原则(理解手打,不是复制)

1.单一原则:一个类只负责一个功能领域的相应职责 2.开闭原则:对修改关闭,对扩展开放 3.里氏替换原则:使用一个基类的引用,可以透明的替换成其子类 4.接口隔离原则:应该依赖于多个专门的接口,而不是依赖一个总的接口 5.依赖反转原则:抽象不依赖于细节,细节依赖于抽象 6.组合复用原则:多使用对象组合,而不是使用继承达到复用的目的 7迪米特原则:一个软件实体应尽量减少与其他实体的相互作用

设计模式七大原则之迪米特法则

迪米特法则:一个软件实体应当尽可能少的与其他实体发生相互作用 如果一个系统符合迪米特法则,那么当其中某一个模块发生修改时,就会尽力少的影响其他模块,扩展会相对容易.这是对软件实体之间通信的限制.迪米特法则要求限制软件实体之间通信的宽度和深度.迪米特法则可降低系统的耦合度,使类与类之间保持松散的耦合关系. 迪米特法则还有几种定义形式:不要和“陌生人”说话,只与你的直接朋友通信等.在迪米特法则中,对于一个对象,其“朋友”包括以下几类: (1)当前对象本身(this) (2)以参数形式传入到当前对象方

《Java设计模式》七大原则

最近几年来,人们踊跃的提倡和使用设计模式,其根本原因就是为了实现代码的复用性,增加代码的可维护性.设计模式的实现遵循了一些原则,从而达到代码的复用性及增加可维护性的目的,设计模式对理解面向对象的三大特征有很好的启发,不看设计模式,很难深层地体会到面向对象开发带来的好处 .在刚开始学习中,很难做到将这些模式融汇贯通,所以这个需要我们在编码前多思考,等想充分了,在开始实践编码.下面是设计模式应当遵循的七大原则 1.开闭原则(Open Close Principle) 定义:一个软件实体如类.模块和函

设计模式 - 七大设计原则(一)

设计模式 - 七大设计原则(一) 概述 简单介绍一下七大设计原则: 开闭原则:是所有面向对象设计的核心,对扩展开放,对修改关闭 依赖倒置原则:针对接口编程,依赖于抽象而不依赖于具体 单一职责原则:一个接口只负责一件事情,只能有一个原因导致类变化 接口隔离原则:使用多个专门的接口,而不是使用一个总接口 迪米特法则(最少知道原则):只和朋友交流(成员变量.方法输入输出参数),不和陌生人说话,控制好访问修饰符 里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能 合成复用原则:尽量使用对象组

【设计模式】 (1)设计模式的七大原则

在我们的称后续的编写过程中,我们会面临着来自耦合.内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式为了让程序具有更好的: 代码重用性(即相同功能的代码,不用多次编写) 可读性(即:编程规范,便于其他人阅读理解) 可靠性(即:当我们增加新功能是,非常方便,对原来的功能没有影响) 使程序实现高内聚,低耦合的特性 设计模式的七大原则 不要问为什么设计模式要这么去设计,这个只是设计模式的一个开发规范,你不遵守也没关系,但是我们应该去遵守这个规范,方便你我他. 单一职责原则 基本介绍