java的23种设计模式01-设计模式介绍

一、设计模式的定义

设计模式,是指在软件设计中,被反复使用的一种代码设计经验。

目的:是为了可重用代码,提高代码的可扩展性和可维护性。

软件开发要实现可维护、可扩展,就必须尽量复用代码,并且降低代码的耦合度。

设计模式把一些常用的设计思想提炼出一个个模式,然后给每个模式命名,这样在使用的时候更方便交流。

二、设计模式的原则

设计模式主要是基于OOP编程提炼的,它基于以下几个原则:

开闭原则

开闭原则是指,软件应该对扩展开放,而对修改关闭。

这里的意思是在增加新功能的时候,能不改代码就尽量不要改,如果只增加代码就完成了新功能,那是最好的。

里氏替换原则

这是一种面向对象的设计原则,即如果我们调用一个父类的方法可以成功,那么替换成子类调用也应该完全可以运行。

三、设计模式的分类

23个常用模式分为创建型模式结构型模式行为型模式三类。

3-1、创建型模式

创建型模式关注点是如何创建对象,其核心思想是要把对象的创建和使用相分离,这样使得两者能相对独立地变换。

创建型模式包括:

  • 工厂方法:Factory Method
  • 抽象工厂:Abstract Factory
  • 建造者:Builder
  • 原型:Prototype
  • 单例:Singleton

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

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

相关文章

GZ083 产品艺术设计赛题第四套

全国职业院校技能大赛 产品艺术设计赛项赛题四 赛项名称 产品艺术设计 英语名称 Product Art Design 赛项编号 GZ083 归属产业 数字产业 任务名称 “探索”主题儿童行李箱设计 赛项组别 中职组 高职组 □学生组 □教师组 □师生联队试点赛项 R学生组 □教师组 □…

Python相关的考试和认证

1.计算机等级考试二级python http://ncre.neea.edu.cn/ 2.蓝桥杯大赛青少年创意编程Python组 http://kid.lanqiao.cn/ 3.青少年编程能力等级_python(CERACU PAAT) http://paat.creacu.org.cn/ 4.全国青少年软件编程等级考试标准(Python1-6级) 中国电子…

CTP-API开发系列之九:行情登录及订阅代码

CTP-API开发系列之九:行情登录及订阅代码 前情回顾全局配置参数行情初始化代码行情登录行情订阅行情接收注意事项 前情回顾 CTP-API开发系列之一:各版本更新说明(持续更新) CTP-API开发系列之二:问题汇总(…

tigramite教程(六)使用TIGRAMITE 进行因果发现

使用TIGRAMITE 进行因果发现 基本用法简单玩玩万年不变的第一步:画出来调查数据依赖性和滞后函数PCMCI 因果发现错误发现率控制进一步相关的方法学教程 画图整合专家对链条的假设基准测试和验证因果效应估计数据集挑战滑动窗口分析 TIGRAMITE 是一个时间序列数据分析的python包…

【Python】新手进阶学习:os.sep---跨平台路径分隔符

【Python】新手进阶学习:os.sep—跨平台路径分隔符 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您…

挑战杯 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉

文章目录 0 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习多目标跟踪 …

【Android】WebView请求HttpRequest和HttpResponse

通过重写WebViewClient默认方法,我们可以实现拦截网络请求的功能 拦截HttpRequest override fun shouldOverrideUrlLoading(view: WebView,request: WebResourceRequest ): Boolean返回true表示阻止该网页加载,返回false表示不拦截 HttpResponse ove…

MPP数据架构设计的缺点

目录 一、MPP架构 二、批处理架构和MPP架构 三、MPP架构的OLAP引擎 一、MPP架构 随着分布式、并行化技术成熟应用,MPP引擎逐渐表现出强大的高吞吐、低延时计算能力,有很多采用MPP架构的引擎都能达到“亿级秒开”。例如Impala、ClickHouse、Druid、Dor…

基于SpringBoot+MYSQL的旅游网站

目录 1、前言介绍 2、主要技术 3、系统流程分析 1、登录流程图如下: 2、管理员后台管理流程图如下: 3. 修改密码流程图如下: 4、系统设计 4.1、系统结构设计 4.2 数据库概述 4.2.1 数据库概念设计 4.2.2 数据库逻辑设计 5、运行截…

多线程多进程处理服务器并发(多进程处理如何解决僵死进程)

目录 1.可循环发送数据的代码 2.改成循环之后每次发现只能处理一个客户端 3.服务器端处理并发问题 3.1 思路 3.2 利用多线程实现并发 ​编辑 3.3 利用多进程实现并发 3.3.1 多进程并发产生的僵死进程问题 ​3.3.2 解决僵死进程问题 1.可循环发送数据的代码 服务器代…

计算机模式识别的基本步骤与详解

在数字化时代的浪潮中,计算机模式识别技术以其卓越的能力,在图像识别、语音识别、自然语言处理等领域展现出了广泛的应用前景。那么,计算机究竟是如何进行模式识别的呢?本文将详细解析计算机进行模式识别的基本步骤,并深入探讨每个步骤的核心要点。 一、模式识别的基本步…

unity中实现场景跳转

1,第一步创建2个场景(右键资源窗口,名字这里我取的1111和2222) 2.添加跳转按钮(双击其中一个场景并添加按钮) 3.编辑按钮的文字(将原本的按钮打开点击里面的text,就可以在右边编辑文…

【JSON】JSON解析 fastJson框架

一、JSON (一)、简介 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。 ​ 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 ​ 易于人阅读和编写,同时也易于机器解析和生成,并有效地提…

MySQL8.0安装教程+使用Navicat远程连接

MySQL8.0安装教程使用Navicat远程连接 版本:MySQL8.0.28 环境:Windows11 1.MySQL下载 进入官网https://www.mysql.com/进行下载: 2.安装MySQL 下载好后,点击运行程序开始安装,安装步骤如下: 以下步骤验…

学习Java的第九天

本章将学习什么是类的无参、带参方法又是什么 一、什么是类的无参方法 类是由一组具有相同属性和共同行为的实体抽象而来。对象执行的操作是通过编写类的方法实现的。显而易见,类的方法是一个功能模块,其作用是“做一件事情”。 1、类的方法必须包括以…

【海贼王的数据航海】排序——概念|直接插入排序|希尔排序

目录 1 -> 排序的概念及其运用 1.1 -> 排序的概念 1.2 -> 常见的排序算法 2 -> 插入排序 2.1 -> 基本思想 2.2 -> 直接插入排序 2.2.1 -> 代码实现 2.3 -> 希尔排序(缩小增量排序) 2.3.1 -> 代码实现 1 -> 排序的概念及其运用 1.1 -&g…

React改变数据【案例】

State传统方式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>React Demo</title> <!--…

linuxOPS基础_vmware虚拟机安装及介绍

虚拟机概念 什么是虚拟机&#xff1f; 虚拟机&#xff0c;有些时候想模拟出一个真实的电脑环境&#xff0c;碍于使用真机安装代价太大&#xff0c;因此而诞生的一款可以模拟操作系统运行的软件。 虚拟机目前有2 个比较有名的产品&#xff1a;vmware 出品的vmware workstatio…

Jmeter(五) - 从入门到精通 - 创建网络计划实战和创建高级Web测试计划(详解教程)

1.简介 上一篇中已经将其的理论知识介绍了一下&#xff0c;这一篇就带着大家一步一步的把上一篇介绍的理论知识实践一下&#xff0c;然后再说一下如何创建高级web测试计划。 2.网络计划实战 通过上一篇的学习&#xff0c;将其分类为&#xff1a; &#xff08;1&#xff09;不需…

蓝桥杯真题讲解:三国游戏(贪心)

蓝桥杯真题讲解&#xff1a;三国游戏&#xff08;贪心&#xff09; 一、视频讲解二、正解代码 一、视频讲解 蓝桥杯真题讲解&#xff1a;三国游戏&#xff08;贪心&#xff09; 二、正解代码 //三国游戏&#xff1a;贪心 #include<bits/stdc.h> #define int long lon…