30天学习Java第四天——设计模式

server/2025/3/14 22:07:15/

设计模式概述

设计模式是一套被广泛接受的、经过试验的、可反复使用的基于面向对象的软件设计经验总结,它是开发人员在软件设计时,对常见问题的解决方案的总结和抽象。
一句话就是,设计模式是针对软件开发中常见问题和模式的通用解决方案。

设计模式有哪些

  1. GoF设计模式:最常用的,四人组(Gang of Four)
    单例模式是其23中设计模式之一
  2. 架构设计模式
  3. 企业级设计模式
  4. 领域驱动设计模式
  5. 并发设计模式
  6. 数据访问模式

GoF设计模式的分类

  1. 创建型:解决对象的创建问题
  2. 结构型:通过设计和构建对象之间的关系,以达到更好的重用性、扩展性和灵活性
  3. 行为型:主要用于处理对象之间的算法和责任分配

单例模式singleton

单例模式属于创建型的设计模式

饿汉式单例模式

如何实现饿汉式单例模式?

  1. 构造方法私有化
  2. 对外提供公开的静态方法,获取实例
  3. 定义一个静态变量,接收类的实例化对象。静态变量在类加载时初始化,只执行一次,从而达到只创建一个实例的目的。

由于饿汉式单例模式,在类加载时就创建出来对象,无论用于不用对象都创建出来了,称为饿汉单例模式。

java">public class Singleton {// 定义一个静态变量private static s = new Singleton()// 构造方法私有化,不让外界使用构造方法创建对象private Singleton(){}// 提供一个公开的获取实例静态方法//一定要是静态的,不需要new对象,通过类名就能访问public static Singleton getSingleton() {return s;}
}

懒汉式单例模式

如何实现饿汉式单例模式?

  1. 构造方法私有化
  2. 对外提供公开的静态方法,获取实例
  3. 提供一个静态变量,但是这个变量值为null;
java">public class Singleton {// 定义一个值为null的静态变量private static s = null;// 构造方法私有化,不让外界使用构造方法创建对象private Singleton(){}// 提供一个公开的获取实例静态方法//一定要是静态的,不需要new对象,通过类名就能访问public static Singleton getSingleton() {// s没有的时候再去创建if(s == null){s= new Singleton();	}return s;}
}

http://www.ppmy.cn/server/174990.html

相关文章

算法每日一练 (11)

💢欢迎来到张胤尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 算法每日一练 (11)全排列题目描述解题思路解题代码c/c…

Android Compose Paging3用法

一、引入包 implementation(libs.paging.runtime)implementation(libs.paging.compose) paging-runtime { module "androidx.paging:paging-runtime", version.ref "paging_version" } paging-compose{module"androidx.paging:paging-compose&quo…

【病毒分析】熊猫烧香病毒分析及其查杀修复

目录 前言 一、样本概况 1.1 样本信息 1.2 测试环境及工具 1.3 分析目标 二、具体行为分析 2.1 主要行为 2.1.1 恶意程序对用户造成的危害 2.2 恶意代码分析 2.2.1 加固后的恶意代码树结构图(是否有加固) 2.2.2 恶意程序的代码分析片段 三、解决方案(或总结) 3.1 …

MySQL数据库复杂的增删改查操作

在前面的文章中,我们主要学习了数据库的基础知识以及基本的增删改查的操作。接下去将以一个比较实际的公司数据库为例子,进行讲解一些较为复杂且现时需求的例子。 基础知识: 一文清晰梳理Mysql 数据库基础知识_字段变动如何梳理清楚-CSDN博…

K8S自动扩缩容实践

以下是 Kubernetes 中 Horizontal Pod Autoscaler (HPA) 和 Vertical Pod Autoscaler (VPA) 的详细 YAML 配置过程及说明: 一、Horizontal Pod Autoscaler (HPA) 1. 前提条件:安装 Metrics Server HPA 依赖资源指标(如 CPU/内存&#xff09…

Linux下部署前后端分离项目 —— Linux下安装nginx

1 打包前后端项目 1.1 打包Vue项目 # 构建生产环境包 npm run build:prod 注意:我这边使用的命令是 npm run build:pro,一般都是 npm run build:prod,具体看前端package.json文件中是如何配置的,如下: 1.2 后端打包 …

深入解析 React 最新特性:革新、应用与最佳实践

深入解析 React 最新特性:革新、应用与最佳实践 1. 引言 React 作为前端开发的核心技术之一,近年来不断推出 新的 API 和优化机制,从 Concurrent Rendering(并发模式) 到 Server Components(服务器组件&a…

c++介绍函数指针 十

指针代表内存中地址标识符,变量,数组都是存储内存中的数据。所以可以获得它们的地址,用指针来表示这块内存。 如图输出内存中的地址。 对于一个函数来说,也是内存中存储这段数据,所以我们也可以获取函数的地址。 函数…