IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 常用设计模式简介 -> 正文阅读

[开发测试]常用设计模式简介

设计模式的目的

在日常开发中合理使用设计模式,可以使得代码易于理解,易于扩展,易于维护

六大设计原则

单一原则

SRP: Single Responsibility Principle

定义:一个类或模块应该只负责完成一项职责。切勿把不同职责的逻辑放在同一个类或方法里。

优点:

  1. 降低类的复杂度;
  2. 提高类的可读性、可维护性;
  3. 降低变更引起的风险。

里式替换原则

LSP:Liskov Substitution Principle

定义:多用组合,少用继承。不要破坏继承体系,当扩展父类时,不要覆盖父类的非抽象方法,应该尽量去扩展。

  1. 里式替换原则时针对继承而言的,如果继承是为了实现代码重用,也就是为了共享方法,那么共享的父类方法就应该保持不变,而不能被子类重新定义。
    子类只能通过新添加方法来扩展功能,父类和子类都是可以实例化,而子类继承的方法和父类是一样的,父类调用方法的地方,子类也可以调用同一个继承得来的,逻辑与父类一致的方法,这时用子类对象将父类替换调时,当然逻辑时一致的,相安无事。
  2. 如果继承的目的是为了多态,而多态的前提就是子类覆盖并重新定义父类的方法,为了符合 LSP,我们应该将父类定义为抽象类,并定义抽象方法,让子类重新定义这些方法,当父类是抽象类时,父类时不能实例化的,所以也不存在可实例化的父类对象在程序里。
    也就不存在子类替换父类的实例时出现逻辑不一致的可能。

依赖倒置原则

DIP:Dependence Inversion Principle

定义:下层模块引入上层模块的依赖,改变原有自上而下的依赖方向。即要面向接口编程,而不是调用真正的实现方法。

接口隔离原则

IIP:Interface Isolation Principle

定义:设计接口要尽可能精简和单一,内部逻辑少对外暴露。

含义:

  1. 接口要尽量小,不违反单一职责原则,要适度的小。
  2. 接口要高内聚,提高接口、类、模块的处理能力,减少对外的交互。
  3. 定制服务,通过对高质量接口的组装,实现服务的定制化。

迪米特法则

LoD:Law of Demeter

定义:只和密友谈话,即要降低耦合,一个类要尽可能减少对其他对象的依赖。也叫最少知道原则。

含义:一个类应该对自己需要耦合或调用的类知道得最少,被耦合或被调用类的内部时如何复杂,和调用类没关系,我就只需要知道你提供了哪些 public 方法,我就调用这么多,其他的一概不关心。

开闭原则

定义:类、方法、模块应该对扩展开放,对修改关闭。

含义:简单来说就是,添加一个新功能应该在已有代码的基础上进行扩展,而不是修改已有的代码。

🌈小结:六大设计原则用一句话总结就是,用抽象去构建框架,用实现去扩展细节,即高内聚,低耦合

创建型设计模式

工厂模式

在创建一个对象时,使用工厂模式可以不对外暴露对象的创建逻辑,即业务调用者无需关心对象的创建逻辑。

优点:把创建者和调用者分离,对外隐藏创建逻辑。

简单工厂模式

定义:简单工厂其实不是一个设计模式,反而比较像时一种编程习惯。

简单工厂模式

角色组成:

  1. 简单工厂类角色:工厂模式的核心,含有一定的商业逻辑和判断逻辑,用来创建产品。
  2. 抽象角色:一般是具体产品继承的父类或者实现的接口。
  3. 具体产品角色:工厂类所创建的对象就是此角色的实例。在 Java 中由一个具体类实现。

工厂方法模式

定义:定义了一个创建对象的接口(类或接口中的方法),但由子类决定要实例化的类是哪一个。工厂方法把实例化推迟到子类。

工厂方法模式

角色组成:

  1. 抽象工厂角色:工厂方法模式的核心,与应用程序无关。是具体工厂角色必须实现的接口或者继承的父类。在 Java 中由抽象类或接口实现。
  2. 具体工厂角色:含有和具体业务逻辑有关的代码,由应用程序调用以创建对应的具体产品对象。
  3. 抽象产品角色:是具体产品继承的父类或者实现接口。在 Java 中一般由抽象类或接口来实现。
  4. 具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在 Java 中一般由具体类是心啊。
    (开闭原则)当由新的产品产生时,只要按照抽象产品角色、抽象工厂角色提供的合同来生成,那么就可以被客户使用,而不必去修改任何已有代码。

抽象工厂模式

定义:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

抽象工厂模式

小结

工厂方法:通过抽象方法提供对象生成入口。

抽象工厂:通过接口来创建一组产品。

单例模式

定义:确保一个类只有一个实例,并提供一个全局访问点。

五种实现方式:

  1. 饿汉式
  2. 懒汉式
  3. 双重校验锁
  4. 静态内部类
  5. 枚举类

单例模式

行为型设计模式

适配器模式

定义:将一个类的接口转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以无间合作。
适配器模式

装饰器模式

定义:动态地将责任附加到对象上。若要扩展功能,装饰器提供了比继承更加有弹性的替代方案。
装饰器模式
装饰器模式

门面模式

定义:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

门面模式

结构型设计模式

命令模式

定义:将"请求"封装成对象,以便使用不同的请求、队列或日志来参数化其他对象。命令模式也支持可撤销的操作。
命令模式
命令模式

迭代器模式

定义:提供一个方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。
迭代器模式

观察者模式

定义:定义了对象之间的一对多依赖。这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。

观察者模式

策略模式

定义:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
策略模式

模版方法模式

定义:在一个方法中定义一个算法的骨架,将一些步骤延迟到子类中。

模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

模版方法模式

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 11:02:20  更:2021-09-08 11:04:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 0:37:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码