设计模式笔记

设计模式

模式:事务的标准样式或者针对特定问题的可重用解决方案

设计模式(Design Pattern)存在以下解释:

  • 设计模式,是一套被反复使用的代码设计经验的总结,是经过提炼的出色的设计方法
  • 设计模式,是程序员在长期的开发实践中总结出的一套提高开发效率的编程方法
  • 设计模式,代表了一些解决常用问题的通用做法,体现了人们尝试解决某些问题时的智慧。所以,它是一种强大的管理复杂度的工具。
  • 设计模式,是在特定问题发生时的可重用解决方案。
  • 一个设计模式用来描述几个模块或类对象之间关系、职责,以及他们之间如何分工与合作。一个甚至几个设计模式共同配合来解决软件设计中面对的实际问题。
  • 设计模式在比编程语言惯用手法更高层面来描述解决特定类型问题的途径。
  • 设计模式用来描述在软件系统中如何通过管理代码的相互依赖性来管理复杂性

使用设计模式的目的是在设计大型项目时,保证所设计的模块之间的代码灵活性和可复用性,但毫无疑问的是,这两个特性都有增加复杂性的代价。

灵活性可以理解为两点:

  • 修改现有的某部分内容不会影响其他部分的内容(影响面尽可能窄或者说尽量将修改的代码集中在一起,不希望大范围修改代码)
  • 增加新内容时尽量少甚至不需要改动系统现有的内容。

可复用性:可以重复使用,可以到处用(可以被很多地方调用)

耦合:两个模块相互依赖,修改其中的一个模块,则另外一个也要修改,这两者之间存在的互相影响关系就叫作两个模块之间存在耦合关系

解耦合:通过修改程序代码,切断两个模块之间的依赖关系,使得对于任意一个模块的更改都不会影响另一个模块,这就说明两个模块已经解耦合了

从编程思维来思考可以借鉴以下两种解决问题复杂性的方法

  • 分解法:把一个复杂的事物分解成若干比较简单的事物,因为人们能够更轻松地理解多个简单事物而不是一个复杂的事物
  • 抽象法:从每个简单的事物中,抽象出本质的内容并封装起来

抽象的原则是把比较稳定的,不怎么变化的内容作为一个模块,单独定义出来。

设计模式的缺点:

  • 增加程序书写的复杂性
  • 增加了学习和理解上的负担
  • 由于一个功能由多个类配合实现,显然会增加额外调用类成员函数的时间花销。

设计模式主要分为行为型模式、创建型模式、结构型模式

  • 行为型模式:这种模式关注的是对象的行为或者交互方面的内容,主要涉及算法和对象之间的职责分配。通过使用对象组合,行为型模式可以描述一组对象应该如何协作来完成一个整体任务。
  • 创建型模式:这种模式关注的是如何创建对象,其核心思想是要把对象的创建和使用相分离(解耦)以取代传统对象创建方式可能导致的代码修改和维护上的问题。
  • 结构型模式:这种模式关注的是对象之间的关系,主要涉及如何组合各种对象以便获得更加灵活的结构,例如,继承机制提供了最基本的子类扩展父类的功能,但结构型模式不仅仅简单的继承,而是更多地通过各种关系组合以获得更加灵活的程序结构,达到简化设计的目的。
相关推荐
金池尽干32 分钟前
设计模式之——观察者模式
观察者模式·设计模式
也无晴也无风雨1 小时前
代码中的设计模式-策略模式
设计模式·bash·策略模式
捕鲸叉10 小时前
MVC(Model-View-Controller)模式概述
开发语言·c++·设计模式
wrx繁星点点10 小时前
享元模式:高效管理共享对象的设计模式
java·开发语言·spring·设计模式·maven·intellij-idea·享元模式
凉辰10 小时前
设计模式 策略模式 场景Vue (技术提升)
vue.js·设计模式·策略模式
菜菜-plus10 小时前
java设计模式之策略模式
java·设计模式·策略模式
暗黑起源喵10 小时前
设计模式-迭代器
设计模式
lexusv8ls600h12 小时前
微服务设计模式 - 网关路由模式(Gateway Routing Pattern)
spring boot·微服务·设计模式
sniper_fandc15 小时前
抽象工厂模式
java·设计模式·抽象工厂模式
无敌岩雀17 小时前
C++设计模式结构型模式———外观模式
c++·设计模式·外观模式