JAVA技术设计模式

设计模式结构图

设计原则

  1. 职责单一原则
  2. 接口隔离原则

      一个类对另一个类的依赖应该建立在最小的接口上

  1. 依赖倒置

面向接口编程,参数或变量,依赖注入,使用父类

  1. 开闭原则

      对扩展开放(对提供方),对修改关闭(对使用方)

      用抽象构建框架,用实现扩展细节

  1. 里氏替换原则

      继承时尽量不要重写父类的方法,引用基类的地方必须能透明地使用其子类的对象

  1. 迪米特原则

      最少知道原则,类间少交互

  1. 合成复用原则

      原则是尽量使用合成/聚合的方式,而不是使用继

设计模式介绍

单例模式

  1. 饿汉式,应用程序启动就加载。

  1. 懒汉式,调用时加载,线程不安全

  1. 懒汉式,线程安全+synchronized

  1. 懒汉式,双检锁,volatile+synchronized

  1. 懒汉式,内部类

建造者模式

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。

例子:StringBuilder

原型模型

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能

Java里面的clone方法

模板模式

在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。

3只企鹅,由于每天吃的都一样,睡觉也都是站着睡,但是打豆豆的方式却不同,所以我们可以将吃饭,睡觉,打豆豆

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

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

相关文章

java中的双列集合(Map,HashMap,TreeMap,LinkedHashMap)

双列集合的特点 双列集合一次需要存一对数据,分别为键和值 键不能重复,值可以重复 键和值是一一对应的,每一个键只能找到自己对应的值 键值这个整体 ,我们称之为“键值对”或者“键值对对象”,在Java中叫做“Entry对象…

CAPL如何发送一条UDP报文

UDP作为传输层协议,本身并不具有可靠性传输特点,所以不需要建立连接通道,可以直接发送数据。当然,前提是需要知道对方的通信端点,也就是IP地址和端口号。 端口号是传输层协议中最显著的特征,传输层根据它来确定上层绑定的应用程序,以达到把数据交给上层应用处理的目的。…

Elementary OS 7.1简单桌面调整

Elementary OS的Pantheon桌面环境提供了一种非常独特和直观的用户体验。默认情况下,Pantheon桌面并没有提供传统的窗口最小化、最大化按钮。但是可以通过安装和使用特定的工具来调整和自定义这些设置。 可以通过以下步骤来启用窗口的最小化和最大化按钮&#xff1a…

【Pytorch】计算机视觉项目——卷积神经网络TinyVGG模型图像分类(模型预测)

介绍 这篇文章是《【Pytorch】计算机视觉项目——卷积神经网络TinyVGG模型图像分类(如何使用自定义数据集)》的最后一部分内容:模型预测。 在本文中,我们将介绍如何测试模型的预测效果——让已训练好模型对一张新的图片进行分类&a…

Docker面试整理-什么是Docker Hub?

Docker Hub 是一个由 Docker, Inc. 维护的公共镜像注册服务,它允许用户分享、存储和管理 Docker 镜像。Docker Hub 提供了一个中心化的资源库,用户可以从中拉取(下载)和推送(上传)镜像,这使得它成为分享和分发容器应用的重要平台。 Docker Hub 的主要功能包括: 镜像存储…

在 SEO 中,一个好的网页必须具备哪些 HTML 标签和属性?

搜索引擎优化 (SEO) 是涉及提高网站在搜索引擎上的可见性的过程。这是通过提高网站在搜索引擎结果页面(例如Google)上的排名来实现的。网站在这些页面上的显示位置越高,就越有可能获得更大的流量。 搜索引擎优化涉及了…

跑mask2former(自用)

1. 运行docker 基本命令: sudo docker ps -a (列出所有容器状态) sudo docker run -dit -v /hdd/lyh/mask2former:/mask --gpus "device0,1" --shm-size 16G --name mask 11.1:v6 (创建docker容器&…

Mac系统使用COLMAP

安装教程 如有出入,参照官网手册最新版 Installation — COLMAP 3.9-dev documentation 首先确保mac上安装了Homebrew 1.安装依赖项 brew install \cmake \ninja \boost \eigen \flann \freeimage \metis \glog \googletest \ceres-solver \qt5 \glew \cgal \s…

Python中Web表单和用户输入的处理

在现代Web应用程序中,处理用户输入和表单提交是必不可少的部分。在Python中,使用Flask框架可以非常方便地处理这些操作。本文将详细介绍如何在Flask中处理Web表单和用户输入,包括基本的表单创建、验证、提交和处理等方面。通过这些内容&#…

万里长城第一步——尚庭公寓【技术概述】

简略版: 项目概述主要是移动端(房源检索;预约看房,租赁管理,浏览历史)和后台管理(管理员对房源进行操作); 项目使用前后端分离的方法,主要以后端为主&#xf…

#05 深入Stable Diffusion的参数调整和优化技巧

文章目录 前言1. 理解关键参数2. 参数调整策略2.1 学习率调整2.2 批量大小优化2.3 迭代次数设置2.4 潜在空间维度选择 3. 优化技巧3.1 使用预训练模型3.2 数据增强3.3 模型微调 4. 实践建议结论 前言 Stable Diffusion作为一款强大的AI图像生成工具,其性能的优劣很…

centos如何压缩zip

在CentOS中,您可以使用zip命令来压缩文件或文件夹为ZIP格式。如果zip命令尚未安装,您可以通过执行以下命令来安装它: sudo yum install zip unzip压缩单个文件的基本命令格式为: zip [压缩后的文件名].zip [文件名]压缩一个文件…

rpm安装

rpm安装 命令格式: rpm 【选项】 文件名 选项: -i:安装软件 -v:显示安装过程信息 -h:用#表示安装进度,一个#代表2% -ivh:安装软件,显示安装过程 -e:卸载软件 -q:查看软件是否安装 -ql&#xff1…

什么是函数?在C语言中如何定义一个函数

函数是编程中用于执行特定任务的一组指令的集合。它有一个名称(即函数名),可以通过该名称在程序中多次调用该函数以执行相同的任务。这有助于提高代码的可重用性和可维护性。 在C语言中,函数的定义通常包括以下几个部分&#xff…

信息系统项目管理师0147:工具与技术(9项目范围管理—9.3规划范围管理—9.3.2工具与技术)

点击查看专栏目录 文章目录 9.3.2 工具与技术 9.3.2 工具与技术 专家判断 规划范围管理过程中,应征求具备如下领域相关专业知识或接受过相关培训的个人或小组 的意见,涉及的领域包括:以往类似项目;特定行业、学科和应用领域的信息…

UIScrollView的相关笔记

1. 当UIScrollview横向滚动时,如果在上面添加5个按钮,但当前scrollview 一页只能显示3个按钮,此时有一项要求,需要在点击第3个按钮时,scrollview自动向左滑动,显示后面的按钮等,需要在按钮点击方…

SpringMVC:Quartz常见问题

一、配置job的xml里<start-time>的时间格式 从源码JobSchedulingDataProcessor类中可以看出&#xff1a;格式例如&#xff08;2012-03-31T05:55:00&#xff09; /*** XML Schema dateTime datatype format.* <p>* See <a href"http://www.w3.org/TR/2001/…

学习anjuke的过程

一、抓包 先看看12.25.1版本的APP是不是还能使用&#xff0c;如果还能使用我们就先破解低版本的。打开APP后发现还能正常使用&#xff0c;因为低版本的难度低我们就破解这个版本。低版本和高版本的算法是一样的&#xff0c;算法破解之后我们后续抓包替换接口就行了。手机安装上…

SQLAlchemy 模型中数据的错误表示

1. 问题背景 在使用 SQLAlchemy 0.6.0 版本&#xff08;也曾尝试使用 0.6.4 版本&#xff09;的 Pylons 应用程序中遇到了一个 SQLAlchemy ORM 问题。该问题出现在使用 psycopg2 作为数据库驱动程序、连接至 Postgresql 8.2 数据库的环境中。定义了一个 User 模型对象&#xf…

FreeRTOS基础(十一):消息队列

本文将详细全方位的讲解FreeRTOS的消息队列&#xff0c;其实在FreeRTOS中消息队列的重要性也不言而喻&#xff0c;与FreeRTOS任务调度同等重要&#xff0c;因为后面的各种信号量基本都是基于消息队列的。 目录 一、消息队列的简介 1.1 产生的原因 1.2 消息队列的解决办法 …