设计模式1-简介

设计模式简介

  • 专栏的目的
  • 什么是设计模式
  • 设计模式要学什么
    • 软件开发原则
    • 主流设计模式
  • 学习建议
    • 经典面试题
  • 资源

专栏的目的

1.理解松耦合的设计思想

2.掌握面向对象设计原则

3.掌握重构技法改善设计

4.掌握GOF核心设计模式

什么是设计模式

每一个模式描述了一个在我们周围不断重复发生的问题以及该问题的解决方案。的核心,这样你就能一次又一次的使用该方案,而不必重复的劳动。

通俗来说:设计模式是我们在软件开发时针对常见问题的通用的,这个方案也是前辈们不断摸索总结出的好的辩证方法,可以理解成为打游戏的攻略。遇到同一类boss时怎么走位

作用
减少烂代码,让项目更好维护。开拓思维,也是软件开发岗位的面试重点

设计模式要学什么

软件开发原则

所有的世界模式基本都是建立在这些原则的基础上进行开发的。这八个原则分别是?
1.单一职责原则
2.开闭原则
3.里氏替换原则。
4.依赖倒置原则
5.接口隔离原则
6. 迪米特法则(最少知道原则)
7.合成聚合复用原则

主流设计模式

一共有23种

在这里插入图片描述

尤其是这个单例模式是重点中的重点,它有很多种不同的实现方式,我们都要了解。

学习建议

先理解概念,了解每个设计模式的特点和应用场景,再多加练习,运用到实际项目。

三个阶段的学习。首先是基础学习,本阶段的目标是了解设计模式。它的概念作用,应用场景特点和类和对象的关系。在学习设计模式时,多个实际生活相结合会更好的理解设计模式的含义。

第二阶段就是编码实现。

最后的阶段也就是项目实战。

经典面试题

单例模式有哪些实现方式?有哪些优缺点?请手写其中一种

你用过哪些设计模式,为什么用它?

资源

在这里插入图片描述
项目
项目实战 - 鱼皮原创项目教程系列 (opens new window)中的聚合搜索项目、OJ 项目都运用了大量的设计模式,推荐学习
书籍
⭐《图解设计模式》(强烈推荐这本书,正是用 Java 语言实现,图多、有示例代码、有习题和答案,很不错)
《Head First 设计模式》
《大话设计模式》
《设计模式:可复用面向对象软件的基础》(大黑书,有能力的话也可以去读)
视频
尚硅谷图解 Java 设计模式:https://www.bilibili.com/video/BV1G4411c7N4(opens new window)
文档
菜鸟教程:https://www.runoob.com/design-pattern/design-pattern-tutorial.html(opens new window)
图说设计模式:https://design-patterns.readthedocs.io/zh_CN/latest/(opens new window)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker 环境部署

1.Redis部署 用docker拉取redis镜像 docker pull redis 用docker查看拉取的镜像版本号,这里查到的是 6.2.6 版本 docker inspect redis 通过wget指令下载对应版本的tar包,下载完成后解压 wget https://download.redis.io/releases/redis-6.2.6.tar.gz …

【2024.6.22】今日科技时事:科技前沿大事件

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

Python抓取高考网图片

Python抓取高考网图片 一、项目介绍二、完整代码一、项目介绍 本次采集的目标是高考网(http://www.gaokao.com/gkpic/)的图片,实现图片自动下载。高考网主页如下图: 爬取的流程包括寻找数据接口,发送请求,解析图片链接,向图片链接发送请求获取数据,最后保存数据。 二…

Android设置页面Activity全屏(隐藏导航栏、状态栏)

3、代码中设置:在setContentView 之前调用 requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 注意: 当有全面屏手机可以显示虚拟…

geojson文件默认已有的style会导致webGL渲染错误处理办法

geojson文件默认已有的style会导致webGL渲染错误处理办法 相关链接: 功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 代码: export function showDraw(isFlyTo) {removeLayer()graphicLayer new mars3d.layer.GeoJsonLayer({data: {type: &quo…

vue3-openlayers 轨迹回放(历史轨迹),实时轨迹

vue3-openlayers 轨迹回放(历史轨迹),实时轨迹 本篇介绍一下使用vue3-openlayers轨迹回放(历史轨迹),实时轨迹 1 需求 轨迹回放(历史轨迹)实时轨迹 2 分析 可以使用和上一篇相同…

【一步一步了解Java系列】:认识异常类

看到这句话的时候证明:此刻你我都在努力 加油陌生人 个人主页:Gu Gu Study专栏:一步一步了解Java 喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者:小闭…

Python中用于从图像中提取文本的8大OCR库

介绍 你是否曾想过你的电脑如何能够从图像中读取文字?这都要归功于一种叫做光学字符识别(Optical Character Recognition, OCR)的技术。 在Python中,有一些非常酷的库可以帮助你的电脑理解图片中的文字。从谷歌强大的Tesseract到E…

热点观察 | 全球社交应用IAP收入持续上升,小游戏、短剧出海赛道火热!

2024年进度条即将过半,回顾上半年,“Sora横空出世”、“短剧出海”、“小游戏爆款不断"给了我们太多惊喜,虽说如今市场竞争激烈、行业日趋饱和,但新技术、新需求也在快速跟上。下面,我们就来盘一盘近期全球手游和…

Python | Leetcode Python题解之第166题分数到小数

题目&#xff1a; 题解&#xff1a; class Solution:def fractionToDecimal(self, numerator: int, denominator: int) -> str:if numerator % denominator 0:return str(numerator // denominator)s []if (numerator < 0) ! (denominator < 0):s.append(-)# 整数部…

开发指南033-数据库兼容

元芳&#xff0c;你怎么看&#xff1f; 单一数据库自身就有一些不同处理之处&#xff0c;如果一个平台要兼容所有数据库&#xff0c;就是难上加难&#xff0c;像isnull函数各数据库就不同。 对于这类问题&#xff0c;平台采用统一自定义函数解决&#xff0c;例如上面的round函…

【Leetcode】2663. 字典序最小的美丽字符串

题目 题目链接&#x1f517;如果一个字符串满足以下条件&#xff0c;则称其为 美丽字符串 &#xff1a; 它由英语小写字母表的前 k 个字母组成。它不包含任何长度为 2 或更长的回文子字符串。 给你一个长度为 n 的美丽字符串 s 和一个正整数 k 。请你找出并返回一个长度为 n…

Android低版本上APP首次启动时间减少80%(二)

06-25 15:10:53.821 7449 7450 D dalvikvm: threadid2: sending two SIGSTKFLTs to threadid135 (tid8021) to cause debuggerd dump SIGSTKFLT 是 Dalvik 虚拟机特有的一个信号。当虚拟机发生了 ANR 或者需要做 GC 的时候&#xff0c;就需要挂起所有 RUNNING 状态的线程&…

技巧:合并多个RAR分卷压缩

因为文件压缩之后体积仍然过大&#xff0c;大家可能会选择进行分卷压缩&#xff0c;那么rar分卷压缩包之后如何合并成一个压缩包文件呢&#xff1f;今天我们来学习rar分卷压缩包&#xff0c;合并成一个的方法。 最基础的方法就是将分卷压缩包解压出来之后&#xff0c;再将文件…

第10章 启动过程组 (概述)

第10章 启动过程组 概述&#xff0c;在第三版教材第354~355页&#xff1b; 文字图片音频方式 视频11 第一个知识点&#xff1a;两个过程 如图10-1 启动过程组第二个知识点&#xff1a;目的 协调各方干系人的期望与项目目的&#xff0c;告知各干系人项目范围和目标&#xff0c…

如何用 Google Chrome 浏览器浏览经过 XSLT 渲染的 XML 文件

对于经过XSLT渲染的XML文件&#xff0c;本来&#xff0c;可以直接用 IE (Internet Explorer) 打开&#xff0c;就能看到渲染之后的样子&#xff0c;很方便。但是后来&#xff0c;微软把 IE 换成了 Microsoft Edge&#xff0c;按理说这是比 IE 更先进的浏览器&#xff0c;可是偏…

软件缺陷及JIRA工具

一、软件缺陷及跟踪流程 1&#xff0c;软件缺陷信息 案例 &#xff08;1&#xff09;缺陷报告的基本内容 缺陷的标题 预置条件 重现步骤 期望结果 实际结果 &#xff08;2&#xff09;软件缺陷的状态 新建 打开 修复 关闭 &#xff08;3&#xff09;软件缺陷的严重程度 …

【计算机毕业设计】204基于微信小程序疫情期间学生请假与销假系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【论文阅读】-- Attribute-Aware RBFs:使用 RT Core 范围查询交互式可视化时间序列颗粒体积

Attribute-Aware RBFs: Interactive Visualization of Time Series Particle Volumes Using RT Core Range Queries 摘要1 引言2 相关工作2.1 粒子体渲染2.2 RT核心方法 3 渲染彩色时间序列粒子体积3.1 场重构3.1.1 密度场 Φ3.1.2 属性字段 θ3.1.3 优化场重建 3.2 树结构构建…

灵感枯竭?来看Charls,新指标发一区(IF=9.3)| CHARLS等七大老年公共数据库周报(6.12)...

七大老年公共数据库 七大老年公共数据库共涵盖33个国家的数据&#xff0c;包括&#xff1a;美国健康与退休研究 (Health and Retirement Study, HRS)&#xff1b;英国老龄化纵向研究 &#xff08;English Longitudinal Study of Ageing, ELSA&#xff09;&#xff1b;欧洲健康、…