设计模式——创建型
1.单例模式
单例模式主要用于某个类有且只能用一个对象的场景,单例模式下不能外部实例化对象,由类内部自行私有化实例对象并提供一个可以获得该对象的方法。单例模式主要有饿汉模式(安全,但在编译时就会自动创建对象,即使不使用对象也会存在,会造成一定资源的浪费)、懒汉模式(安全,通过synchroized锁实现,每次获取对象时都会加锁,会对性能有一定影响)、DCL模式(基本安全,通过synchroized锁实现,在获取对象的方法内部加锁,当已经实例化对象时不会加锁直接返回对象,但在极少数情况下会出现线程不安全的情况)、静态内部类模式(安全,在类内定义一个静态的私有化的类来实例化对象)。
饿汉模式:
public class CEO {private static final mCEO = new CEO();//私有化实例化对象private CEO() { }//私有化构造方法public static CEO getCEO() {return mCEO;}//提供获取对象的接口
}
懒汉模式:
public class CEO {private static CEO mCEO;private CEO() { }public static synchroized CEO getCEO() {if(mCEO == null) {mCEO = new CEO(); }return mCEO;}//synchroized,加同步锁,保证唯一;
}DCL模式:
public class CEO {private static CEO mCEO = null;private CEO() { }public static CEO getCEO() {if(mCEO == null) {synchroized(CEO.class) {if(mCEO == null) {mCEO = new CEO();}}}return mCEO;}
}静态内部类模式:当外部类被加载时,静态内部类不会立即加载,只有在第一次调用内部类的静态成员或方法时才会加载,这样实现了懒加载的效果。同时,类加载过程是线程安全的,因此静态内部类单例模式也是线程安全的
public class CEO {private CEO() { }public static CEO getCEO() {return CEOInstance.mCEO;}//静态内部类private static class CEOInstance {private static final CEOInstance mCEO = new CEO();}
}
2.构建者模式
用于创建复杂对象,将对象的创建与表示分离、按步奏创建对象,通常包含以下角色。
 产品(Product)——要创建的复杂对象,一般包含多种属性;
 抽象构建者(Abstract Builder)——创建产品的各个抽象方法,以及返回最终产品的方法;
 具体构建者(Concrete Builder)——负责产品的具体创建,以及最终产品的返回;
 指导者(Director)——使用构建者构建产品;
public class Product {private String partA;private Int partB;private Double partC;public get();//相应参数的get方法public set();//相应参数的set方法
}
public interface Builder {void buildPartA(String part);void buildPartA(Int part);void buildPartA(Double part);Product getProduct();
}
public ConcreteBuilder implements Builder {private Product product;public ConcreteBuilder() {product = new Product();}@Overridepublic  void buildPartA(String part) {product.setPartA(part);}@Overridepublic  void buildPartA(Int part) {product.setPartB(part);}@Overridepublic  void buildPartA(Double part) {product.setPartC(part);}@Overridepublic  Product getProduct() {return product;}
}
public class Director {private Builder builder;public void setBuilder(Builder builder) {this.builder = builder;}public Product concreteProduct() {builder.builderPartA("partA");builder.builderPartB(45);builder.builderPartC(1.44);return builder.getProduct();}
}
//实际使用
ConcreteBuilder builder = new ConcreteBuilder();
Director director = new Director();
director.setBuilder(builder);
Product product = director.concreteProduct();
3.工厂模式
特点:向上转换思想;不直接new对象,子类具体决定实例化什么对象;
 应用:需要生成复杂对象的地方;
 角色:抽象工厂、具体工厂、抽象产品、具体产品;
 通用模式写法:
 抽象工厂——定义一个返回抽象产品的抽象方法,该方法负责构造产品;
 具体工厂——重写构造产品的方法,返回对象为具体产品;
 抽象产品——定义一个抽象方法,该方法与产品关联;
 具体产品——根据具体产品重写父类中与产品关联的抽象方法;
//抽象产品
public abstract class Product{public abstract void fuction();
}
//具体产品A
public class ProductA extends Product{@Override public void function() {system.out.println("产品A的功能是...");}
}
//具体产品B
public class ProductB extends Product{@Override public void function() {system.out.println("产品B的功能是...");}
}//抽象工厂写法
public abstract class Factory{public abstract  Product  createProduct();
}
//具体工厂写法
public ConcreteFactoryA extends Factory {@Overridepublic ProductA createProduct() {return new ProductA();}
}
public ConcreteFactoryB extends Factory {@Overridepublic ProductB createProduct() {return new ProductB();}
}
//客户or测试
public class Client{public static void main(String[] args) {Factory factory = new ConcerateFactoryA();   Product product = factory.createProduct();product.fuction();}
}
相关文章:
设计模式——创建型
1.单例模式 单例模式主要用于某个类有且只能用一个对象的场景,单例模式下不能外部实例化对象,由类内部自行私有化实例对象并提供一个可以获得该对象的方法。单例模式主要有饿汉模式(安全,但在编译时就会自动创建对象,…...
 
iTOP-i.MX8M开发板添加USB网络设备驱动
选中支持 USB 网络设备驱动,如下图所示: [*] Device Drivers→ *- Network device support → USB Network Adapters→ {*} Multi-purpose USB Networking Framework 将光标移动到 save 保存,如下图所示: 保存到 arch/arm64/c…...
 
分类预测 | MATLAB实现GAPSO-LSSVM多输入分类预测
分类预测 | MATLAB实现GAPSO-LSSVM多输入分类预测 目录 分类预测 | MATLAB实现GAPSO-LSSVM多输入分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.分类预测 | MATLAB实现GAPSO-LSSVM多输入分类预测 2.代码说明:要求于Matlab 2021版及以上版本。 程序…...
 
JMeter 的并发设置教程
JMeter 是一个功能强大的性能测试工具,可以模拟许多用户同时访问应用程序的情况。在使用 JMeter 进行性能测试时,设置并发是非常重要的。本文将介绍如何在 JMeter 中设置并发和查看报告。 设置并发 并发是在线程组下的线程属性中设置的。 线程数&#…...
数据治理有哪些产品
数据治理是现代企业管理中至关重要的一个环节。随着企业的数据量不断增长,如何有效地管理和利用数据成为了一个亟待解决的问题。幸运的是,市场上已经涌现出了许多优秀的数据治理产品,下面就来介绍一些常见的数据治理产品。 首先,我…...
 
windows安装go,以及配置工作区,配置vscode开发环境
下载安装go 我安装在D:\go路径下配置环境变量 添加GOROOT value为D:\go修改path 添加%GOROOT%\bin添加GOPATH value为%USERPROFILE%\go 其中GOPATH 是我们自己开发的工作区,其中包含三个folder bin,pkg,以及src,其中src为我们编写代码的位置 配置vscod…...
第五章nginx负载均衡
负载均衡:反向代理来实现 nginx的七层代理: 七层是最常用的反向代理方式,只能配置在nginx配置文件的hppt模块中。而且配置方法名称:upstream模块,不能写在server中,也不能在location中,在http…...
 
MATLAB计算一组坐标点的相互距离(pdist、squareform、pdist2函数)
如果有一组坐标P(X,Y),包含多个点的X和Y坐标,计算其坐标点之间的相互距离 一、坐标点 P[1 1;5 2;3 6;8 8;4 5;5 1; 6 9];二、pdist函数 输出的结果是一维数组,获得任意两个坐标之间的距离,但没有对应关系 Dpdist(P)三、square…...
 
我国农机自动驾驶系统需求日益增长,北斗系统赋能精准农业
中国现代农业的发展,离不开智能化、自动化设备,迫切需要自动驾驶系统与农用机械的密切结合。自动驾驶农机不仅能够缓解劳动力短缺问题,提升劳作生产效率,同时还能对农业进行智慧化升级,成为解决当下农业痛点的有效手段…...
 
防雷检测行业应用完整解决方案
防雷检测是指对雷电防护装置的性能、质量和安全进行检测的活动,是保障人民生命财产和公共安全的重要措施。防雷检测的作用和意义主要有以下几点: 防止或减少雷电灾害事故的发生。雷电是一种自然现象,具有不可预测、不可控制和高能量等特点&a…...
 
16.4 【Linux】特殊文件与程序
16.4.1 具有 SUID/SGID 权限的指令执行状态 SUID 的权限其实与程序的相关性非常的大!为什么呢?先来看看 SUID 的程序是如何被一般使用者执行,且具有什么特色呢? SUID 权限仅对二进制程序(binary program)…...
qrcode.react生成二维码
qrcode.react 是一个**用于生成二维码(QR 码)的 React 组件库。**它提供了一个 React 组件,可以轻松地在 React 应用程序中生成和显示 QR 码。 使用 qrcode.react,可以以声明式的方式在 React 组件中定义 QR 码的内容、尺寸、颜色…...
ETF套利及交易者如何进行套利的
ETF套利 什么是ETF套利为什么同一ETF在不同交易所上的价格会出现差异?如何操作ETF套利交易所如何解决ETF套利问题的? 什么是ETF套利 ETF(Exchange-Traded Fund)套利是一种通过利用市场中不同交易所交易价格之间的差异来获得利润的…...
了解异或的好处和用途
1.什么是异或? 异或:对于二进制,相同为0 不同为11 ⊕ 1 00 ⊕ 0 01 ⊕ 0 10 ⊕ 1 1 2.异或的好处? 异或的好处?1.快速比较两个值 2.xor a a例如 a 3 011xor 0110003.可以使用 异或 来使某些特定的位翻转【原因…...
vue函数式组件
<template>改为<template functional> 即可然后模板里使用到父组件参数的话,需在变量前面加上 props,如 <div>{{count}}</div> 改为 <div>{{props.count}}</div>如果组件比较简单,只是展示数据的话&…...
 
Idea Live Template 功能总结
文章目录 Java自带的template属性模板psf——public static finalpsfi——public static final intpsfi——public static final StringSt——String 方法模板psvm——main方法sout——打印语句iter——for迭代循环fori——for循环 代码块模板if-e —— if elseelse-if 自定义自…...
 
场景入门12----构造脚本搭建栅栏和石头墙
打开任意一个蓝图都有构造脚本,就是当这个蓝图在诞生时就会运行的东西 新建一个蓝图,在构造函数里添加静态网格体,把蓝图拖出来就能显示 多个栅栏 创建多个栅栏。新建一个变量为栅栏数量,数组从0开始,所以countt要减一…...
 
零基础看懂免费开源的Stable Diffusion
文章目录 前言Diffusion模型推理过程训练过程 Stable Diffusion模型参考 前言 前面一篇文章主要讲了扩散模型的理论基础,还没看过上篇的小伙伴可以点击查看:DDPM理论基础。这篇我们主要讲一下一经推出,就火爆全网的Stable Diffusion模型。St…...
Zmq适配Win7 SP0 / Win XP/ Win 2k
1.目的 由于发布版本的libzmq使用了较多新的系统特性,导致在低版本windows平台上无法使用。 因此,需要对zmq源码进行修改以适配低版本的系统,如Win7 SP0,Win XP,Win2003等等。 2.Win7 SP0 #if defined ZMQ_HAVE_WIN…...
 
掌握Python的X篇_30_使用python解析网页HTML
本篇将会介绍beutifulsoup4模块,可以用于网络爬虫、解析HTML和XML,对于没有接触过前端,不了解HTML是如何工作的,需要先解释一下什么事HTML。 1. HTML 网页中的各种布局等的背后都是非常简单的纯文本格式,那种格式称为…...
 
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
 
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
 
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
 
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
 
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
 
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
 
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
