【设计模式】(一)设计模式概述

news2024/12/24 8:25:27

一、设计模式概述

设计模式(Design pattern)**是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结

在GOF编写的设计模式(可复用面向对象软件的基础)一书中说道: 本书涉及的设计模式并不描述新的或未经证实的设计,我们只收录那些在不同系统中多次使用过的成功设计

  • 大部分设计模式要解决的都是代码的可重用性、可扩展性问题

如果说数据结构和算法是教你如何写出高效代码,那设计模式讲的是如何写出可扩展、可读、可维护的高质量代码,所以,它们跟平时的编码会有直接的关系,也会直接影响到你的开发能力。

  • 学习设计模式的好处

    • 能够从容应对面试中的设计模式相关问题

      我们学习技术从最功利的角度讲,就是为了拿到心仪的offer,得到想要的薪资.所以在面试时特别是面试一些BAT大厂时,如果被问到设计模式的问题, 因为我们学了本次课程, 就不会再惧怕这些问题,设计模式反而会成为你面试中的亮点.

    • 不再编写 bullshit-code

      代码能力是一个程序员最基础的能力,是基本功,是展示一个程序员基础素养的最直接的衡量标准。你写的代码,实 际上就是你名片。我们通过学习设计模式,告别烂代码的编写,避免比如类设计不合理,代码结构混乱,分层不清晰 等等这样的代码问题. 让我们编写的代码成为团队中的标杆.

    • 提高复杂代码的设计和开发能力

      不再只是根据业务需求翻译代码,填充代码. 而是能够通过所学习的设计模式的相关知识写出高质量的代码.即使面对复杂代码功能或者系统的设计开发也能得心应手.

    • 有助于我们读懂源码,学习框架更加事半功倍

      对于一个有追求的程序员来说,对技术的积累,既要有广度,也要有深度。所以我们需要更多的去学习研究各种框架,中间件的底层原理,而这些优秀的框架 中间件的源码中会使用到很多设计思想 设计原则 设计模式 ,所以为了更好的独懂这些开源项目,我们必须好设计模式相关知识.

二、设计模式分类

GoF设计模式只有23个,但是它们各具特色 ,每个模式都为某一个可重复的设计问题提供了一套解决方案。

根据它们的用途,设计模式可分为 **创建型(Creational) **,结构型(Structural) 行为型(Behavioral)

  • 创建型模式(5种):提供创建对象的机制,提升已有代码的灵活性和可复用性

       常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。 
     
       不常用的有:原型模式。
    

在这里插入图片描述

  • 结构型模式(7种):介绍如何将对象和类组装成较大的结构,并同时保持结构的灵活和高效**

       常用的有:代理模式、桥接模式、装饰者模式、适配器模式。 
       
       不常用的有:门面模式、组合模式、享元模式。
    

    在这里插入图片描述

  • 行为模式(11种):负责对象间的高效沟通和职责传递委派

      常用的有:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式。
      不常用的有:访问者模式、备忘录模式、命令模式、解释器模式、中介模式
    

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1480191.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode34.在排序数组中查找元素的第一个和最后一个位置

题目 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 输入…

模型选择与评估

🚩 机器学习的一般流程包括:数据集的准备与预处理、搭建模型、模型训练、模型评估与应用。 在现实任务中,我们往往有多种学习算法可供选择,甚至对同一个学习算法,当使用不同的参数配置时,也会产生不同的模型…

Javascript:输入输出

目录 一.前言 二.正文 1.输出 2.输入 3.字面量 概念: 三.结语 一.前言 Javascript作为运行浏览器的语言,对于学习前端的同学来说十分重要,那么从现在开始我们将开始介绍有关 Javascript。 二.正文 1.输出 document.write() : 向body内…

新品齐发!小牛电动打造全场景高端化产品阵列!

2 月 29 日,全球智能城市出行品牌小牛电动发布“新世代性能旗舰”电摩NX、电自NXT,以及“全场景智驾越野电摩”X3三款新品。同时,与知名体育电竞俱乐部——JDG京东电子竞技俱乐部携手,打造“英雄的联盟”超级形象,引领…

扫码点餐多门店先付后餐小程序开发

多门店扫码点餐系统-先付后餐模式-公众号与小程序开源版 适用范围:适用于快销类餐饮,如早餐、面馆、快餐、零食小吃等,满足顾客快捷扫码点餐的需求。 该系统仅支持先付款后就餐的模式,不支持赊账或后付款服务。 核心功能&…

免费pr素材(Premiere创意彩色图形动画背景视频素材)下载

Premiere素材,10个创意彩色图形动画pr背景视频素材,Pr动态图形模板mogrt下载。 特点:Premiere Pro 2023或更高版本,超高清分辨率:38402160,每秒25帧的帧速率,包括教程视频。来自PR素材网&#x…

MDS500-16-ASEMI整流模块MDS500-16参数、封装、尺寸

编辑:ll MDS500-16-ASEMI整流模块MDS500-16参数、封装、尺寸 型号:MDS500-16 品牌:ASEMI 封装:M34 正向电流(Id):500A 反向耐压(VRRM):1600V 正向浪涌…

Amino PEG11 COOH,Amino-PEG11-acid,可在活化剂存在下与氨基反应

您好,欢迎来到新研之家 文章关键词:1616426-12-0,Amino-PEG11-acid,Amino PEG11 COOH,H2N-PEG11-CH2CH2COOH,氨基-PEG11-羧酸 一、基本信息 【产品简介】:Amino-PEG11 acid is a heterobifun…

探索Redis 6.0的新特性

Redis(Remote Dictionary Server)是一个开源的内存中数据结构存储系统,通常被用作缓存、消息队列和实时数据处理等场景。它的简单性、高性能以及丰富的数据结构支持使其成为了众多开发者和企业的首选。在Redis 6.0版本中,引入了一…

超越CPU和GPU:引领AI进化的LPU

什么是CPU CPU(Central Processing Unit)是由数十亿个晶体管构成的,可以拥有多个处理核心,通常被称为计算机的“大脑”。它对所有现代计算系统至关重要,因为它执行计算机和操作系统所需的命令和进程。CPU在决定程序运…

Leetcoder Day32| 贪心算法part05

763.划分字母区间 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 示例: 输入:S "ababcbacadefegdehijhklij"输出:[9,7…

【Leetcode每日一题】二分查找 - LCR 173. 点名(难度⭐)(24)

1. 题目解析 Leetcode题目链接:LCR 173. 点名 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 核心在于找到题目所给的连续数组中缺失的数字即可。 2.算法原理 在这个升序的数组中,我们发现: …

金融方案再获认可!持安获评2023年度金融行业优秀解决方案

近日,由网络安全产业资讯媒体安全419主办的《年度策划》2023年度优秀解决方案评选结果正式发布。零信任办公安全技术创新企业持安科技荣获“2023年度优秀解决方案-金融行业优秀解决方案”。 安全419是以内容报道服务于行业的垂直资讯媒体和第三方企业服务机构。11月…

【LeetCode-中等】209.长度最小的子数组-双指针/滑动窗口

力扣题目链接 1. 暴力解法 这道题的暴力解法是两层嵌套for循环,第一层循环从 i 0 开始遍历至数组末尾,第二层循环从 j i 开始遍历至找到总和大于等于 target 的连续子数组,并将该连续子数组的长度与之前找到的子数组长度相比较&#xff0…

腾讯:《智能科技 跨界相变——2024数字科技前沿应用趋势》

1月23日,腾讯发布了题为《智能科技 跨界相变——2024数字科技前沿应用趋势》的报告,报告从计算重塑、智能升维、沉浸交互、未来连接四个方面,对100多项未来技术和重点方向给出了趋势性判断。并表示我们正驶向一个由连接衍生交互、由计算催生智…

mysql服务治理

一、性能监控指标和解决方案 1.QPS 一台 MySQL 数据库,大致处理能力的极限是,每秒一万条左右的简单 SQL,这里的“简单 SQL”,指的是类似于主键查询这种不需要遍历很多条记录的 SQL。 根据服务器的配置高低,可能低端…

能让薪资翻3倍的软件测试面试经验

前言 面试真题:3 轮技术面 HR 面 面试总共经历四轮的面试,三轮的技术面试和一轮的 HR 面试,共耗时 5 个小时以上。 一面(组长面) 上家公司项目以及团队的规模是怎么样的? 你负责的项目整体的流程是怎么样的…

ETH开源PPO算法学习

前言 项目地址:https://github.com/leggedrobotics/rsl_rl 项目简介:快速简单的强化学习算法实现,设计为完全在 GPU 上运行。这段代码是 NVIDIA Isaac GYM 提供的 rl-pytorch 的进化版。 下载源码,查看目录,整个项目…

vue cesium加载点与定位到指定位置

vue cesium定位到指定位置 window.viewer.camera.flyTo({destination: Cesium.Cartesian3.fromDegrees(point.longDeg, point.latDeg, 6500000), orientation: {heading: 6.2079384332084935, roll: 0.00031509431759868534, pitch: -1.535}, duration: 3})vue cesium加载点 …

Talk|卡内基梅隆大学熊浩宇:Open-world Mobile Manipulation-开放世界机器人学习系统

本期为TechBeat人工智能社区第575期线上Talk。 北京时间2月29日(周四)20:00,卡内基梅隆大学研究生—熊浩宇的Talk已准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “Open-world Mobile Manipulation-开放世界机器人学习系统”,将向…