什么是设计模式?

设计模式(Design pattern) 是解决软件开发某些特定问题而提出的一些解决方案也可以理解成解决问题的一些思路。通过设计模式可以帮助我们增强代码的可重用性、可扩充性、 可维护性、灵活性好。我们使用设计模式最终的目的是实现代码的 高内聚低耦合
什么是高内聚和低耦合?
举例一个现实生活中的例子,例如一个公司,一般都是各个部门各司其职,互不干涉。各个部门需要沟通时通过专门的负责人进行对接。在软件里面也是一样的 一个功能模块只是关注一个功能,一个模块最好只实现一个功能。这个是所谓的内聚,模块与模块之间、系统与系统之间的交互,是不可避免的, 但是我们要尽量减少由于交互引起的单个模块无法独立使用或者无法移植的情况发生, 尽可能多的单独提供接口用于对外操作, 这个就是所谓的低耦合

设计模式的6大原则

1、开闭原则(Open Close Principle)

对软件实体的改动,最好用扩展而非修改的方式。如果要修改代码,尽量用继承或组合的方式来扩展类的功能,而不是直接修改类的代码。

2、里氏代换原则(Liskov Substitution Principle)

尽量把父类设计为抽象类或者接口,让子类继承父类或实现父接口,子类可以扩展父类的功能,但不能改变父类原有的功能。
1. 老爸能干的事情,儿子都能干。
2. 但是儿子能干的事情老爸不一定能干。

里氏代换原则是开闭原则的具体实现手段之一。

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

一个类只承担一个职责,千万不要让一个类干的事情太多。

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

接口最小化。接口中的方法应该尽量少。和单一职责原则类似

  • 单一职责针对的是类,
  • 接口隔离针对的是接口

5、依赖倒转原则(Dependence Inversion Principle)

要依赖抽象,不要依赖具体类。这个和针对接口编程, 而不是面向实现编程很像。但是它更强调抽象。这个原则是不能让高层组件依赖底层组件,而且高层组件和低层组件都应该依赖抽象。摘抄自 【Head First 设计模式】

面向接口编程 而不是面向实现编程,
这里的接口不一定就是我们程序中的接口也可以是抽象类。

  Animal dog1 = new Dog();//面向接口Dog dog2 = new Dog();//面向实现

6、迪米特法则,又称最少知道原则(Demeter Principle)

  1. 类向外公开的方法应该尽可能的少,
  2. 依赖的对象尽可能的少(只依赖应该依赖的对象)。

例如一个电脑 有 关闭电脑是要按照下面方式依次执行
1. 保存当前任务
2. 关闭服务
3. 关闭屏幕
4. 关闭电源

当我们执行时候这4个操作不用对操作人都开放 只要有一个关闭电脑的行为方法即可 ,而这个关闭电脑行为包含 保存当前任务,关闭服务,关闭屏幕,关闭电源。如果按照单一职责原则我们可以将电脑拆分为 操作系统 和 硬件设备容器 操作人只需要依赖 硬件设配容器即可,而我们的硬件设备容器依赖操作系统。

参考文献:
https://blog.csdn.net/fangkang7/article/details/82684819
https://blog.csdn.net/eleanoryss/article/details/79555200
https://www.jianshu.com/p/a24468909525
https://www.jianshu.com/p/a24468909525
https://juejin.im/post/5b7e4d31f265da43223c3043
https://juejin.im/post/5b7e4d31f265da43223c3043
https://www.jianshu.com/p/30931aab5ea0

简单说一下什么是设计模式?相关推荐

  1. js observer 添加_简单了解4种JS设计模式

    阅读本文约需要5分钟 大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了15款有用前端开发的ST插件的知识,今天跟大家分享下4种 ...

  2. 用C#(.NET Core) 实现简单工厂和工厂方法设计模式

    本文源自深入浅出设计模式. 只不过我是使用C#/.NET Core实现的例子. 前言 当你看见new这个关键字的时候, 就应该想到它是具体的实现. 这就是一个具体的类, 为了更灵活, 我们应该使用的是 ...

  3. 设计模式-简单工厂(并不是设计模式 是一种设计风格)

    简单工厂:三个角色 抽象产品 具体产品 具体工厂 优点: 用户看不到对象是如何创建的 缺点:每新增一个类的时候 都要去修改工厂 不满足开闭原则 拓展:可以与配置文件一起联合使用 package com ...

  4. 简单工厂模式-接口在设计模式中的应用之一

    接口在设计模式中的应用之一:简单工厂模式 无工厂:手工 缺点:麻烦,对每一个的要求都比较高 优点:个性化 工厂:生产产品 优点:批量生产,使用者比较方便,直接买 缺点:无法定制,如果非要定制就会比较麻 ...

  5. 简单的对象监听器 观察者设计模式

    该代码实现了一个可以注册监听类的类,如果注册了监听类,那么在类的一个方法执行前会执行监听类的方法.并且该监听类方法的参数就是被监听对象. 监听类就是事件监听器,被监听对象就是事件源,事件监听器的参数就 ...

  6. 设计模式学习笔记二:简单工厂模式

    含义: 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创 ...

  7. Head First设计模式读书笔记四 简单工厂 工厂模式 抽象工厂模式

    本文示例代码材料源自Head First设计模式 以前整理自己整理的链接: 工厂模式 https://blog.csdn.net/u011109881/article/details/56541580 ...

  8. 【Head First 设计模式】-简单工厂模式读后总结

    1 简单工厂模式定义和特点 1.1 什么是简单工厂模式 书中并没有对简单工厂进行定义,我觉得百度百科介绍还不错就摘抄拉过来: 简单工厂模式(Simple Factory Pattern)属于类的创新型 ...

  9. [python实现设计模式]-3.简单工厂模式-触宝开放平台

    预备知识: 开放封闭原则(Open-Closed Principle OCP) Software entities(classes,modules,functions etc) should open ...

最新文章

  1. SQL语句查询出的数据进行字符串拼接,oracle批量删除数据库用户实例演示
  2. C++ leetcode 26. 删除排序数组中的重复项 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
  3. perl里字符串取长度,比较等一些操作
  4. tableau中的那些快捷键,让你的操作更顺滑
  5. linux 下脚本安装 mysql_linux(centos7)下编译安装mysql(数据库)一键安装详解+脚本文件...
  6. Win11系统显示你的账户已被停用怎么办
  7. 打开文件对话框控件的演示 c# 1614993940
  8. 自学 Python 到什么程度能找到工作,1300+ 条招聘信息告诉你答案
  9. SQL Server中关于跟踪(Trace)那点事(转载)
  10. Java求两个数的最大公约数
  11. msp单片机UCS配置
  12. ShowWindowAsync系统方法cmdShow参数值含义
  13. sql server的搜索_在SQL Server中进行全文本搜索
  14. expdp 详解及实例
  15. linux 字符串模糊匹配,awk模糊匹配
  16. Android国家区号 中英文
  17. #.net在技术上远超Java,可是为什么大多数公司还是选择使用Java
  18. 如何有效提升留存率促进用户活跃?
  19. 香港站群多段服务器VPS大带宽服务器日本站群多段服务器
  20. python文件审计_Python代码审计实战案例总结之CRLF和任意文件读取

热门文章

  1. html和c的区别,tn-s系统与TN-C的区别是什么
  2. 在C#中使用Google翻译API
  3. Infer.NET——为热爱概率的人准备的库
  4. SQL 使用总结四(关于索引)
  5. 不修改代码就能优化ASP.NET网站性能的一些方法
  6. php如何修改二维数组的值,php如何改变二维数组的值
  7. 什么是网络爬虫python_什么的什可以组什么词语
  8. php中padding,css中padding填充详解
  9. 反思 大班 快乐的机器人_幼儿园大班健康教案《有趣的椅子》含反思
  10. 邢台职业技术学院计算机专业分数线,邢台职业技术学院录取分数线2021是多少分(附历年录取分数线)...