编程-结构型设计模式-小结

笔记二:结构型设计模式

引言

结构型设计模式关注于如何组合类或对象来形成更大的结构。这些模式提供了多种方式来改变类的接口或组合类来获得新的功能,从而帮助我们解决常见的软件设计问题。

结构型模式的定义

结构型设计模式是一类设计模式,用于简化接口、组合对象、改变类的接口、封装对象的创建过程等。这些模式帮助开发者设计出更易于理解、维护和扩展的系统。

为什么需要结构型模式
  • 简化接口:通过提供一个简洁的接口来访问一组接口或子系统,使得客户端代码更易于编写和维护。
  • 组合对象:允许将对象组合成树形结构来表示"部分-整体"的层次结构,以便一致地处理单个对象和组合对象。
  • 改变类的接口:使现有类的接口与所需接口相匹配,从而可以重用现有类而不需修改它们。
  • 封装对象的创建过程:允许在不改变现有对象的情况下添加新的功能,或控制对一个对象的访问。
小结
  • 结构型模式的共性

    • 这些模式都关注于如何组织类和对象以形成更大的结构。
    • 它们提供了一种方式来改变类的接口或组合类来获得新的功能。
    • 结构型模式通常有助于降低系统的耦合度,使得程序更易于维护和扩展。
  • 何时使用这些模式

    • 当你需要简化接口以提供一个更高级别的视图时。
    • 当你需要组合对象以形成更大的结构时。
    • 当你需要改变现有类的接口以满足新的需求时。
    • 当你需要在不改变现有对象的情况下添加新的功能时。
    • 当你需要控制对一个对象的访问时。
结构型模式的共性
  • 接口的简化:这些模式通常提供一个简化的接口,使得客户端代码可以更容易地与子系统交互。
  • 对象的组合:这些模式允许将对象组合起来形成更大的结构,从而可以以一致的方式处理单个对象和复合对象。
  • 接口的调整:通过适配器、桥接等方式调整现有接口以适应新的环境。
  • 功能的扩展:通过装饰器等模式在不改变现有对象的情况下添加新的功能。
  • 访问的控制:通过代理模式控制对对象的访问。
何时使用这些模式
  • 适配器模式:当你需要将一个类的接口转换成客户期望的另一个接口时。
  • 桥接模式:当你需要将抽象与其实现分离,以便两者可以独立变化时。
  • 组合模式:当你需要将对象组合成树形结构来表示"部分-整体"的层次结构时。
  • 装饰器模式:当你需要动态地给对象添加额外的责任时。
  • 外观模式:当你需要为一个子系统提供一个简洁的接口时。
  • 享元模式:当你需要减少大量相似对象的内存消耗时。
  • 代理模式:当你需要控制对一个对象的访问,或者在访问前后执行某些操作时。

通过使用结构型设计模式,你可以有效地管理和组织类和对象,从而构建出更灵活、更易于维护的系统。这些模式有助于降低系统的复杂度,并提高代码的可读性和可维护性。

相关推荐
嘟嘟07172 小时前
TypeScript 工具类型通关:Pick、Omit、Partial、Record 区别与 Omit 等价实现一次讲清
设计模式·面试·typescript
SL_staff3 小时前
中小离散制造如何用工艺路线模板解决‘人走流程丢’——JVS-APS 实践解析
java·设计模式·全栈
Asize3 小时前
3 种设计模式 + DI:Nest.js 后端第一课
后端·设计模式·nestjs
St_rive13 小时前
Page Object设计模式
java·开发语言·设计模式
烬羽1 天前
NestJS 依赖注入:Controller 里那个没有 new 的 service,到底从哪来的?
设计模式·typescript·nestjs
用户938515635072 天前
工厂模式与 Nest.js 核心思想 —— 从蜜雪冰城到企业级架构
后端·设计模式·nestjs
烬羽2 天前
从 nest new 到 Hello World:一个最小 NestJS 项目,讲透工厂 + 装饰器 + 模块化
设计模式·node.js·nestjs
艺艺生辉3 天前
从if-else到策略模式
后端·设计模式
小林ixn3 天前
单例模式:从弹窗管理到全局状态,一个模式搞定
前端·javascript·设计模式
AI人工智能+电脑小能手3 天前
大白话说Java设计模式-17-装饰器模式(源码剖析篇)
java·spring·设计模式·装饰器模式·源码分析·io流