Java设计原则和设计模式

目录

第一部分:设计原则

  1. 单一职责原则 (Single Responsibility Principle)
  2. 开闭原则 (Open-Closed Principle)
  3. 里氏替换原则 (Liskov Substitution Principle)
  4. 接口隔离原则 (Interface Segregation Principle)
  5. 依赖倒置原则 (Dependency Inversion Principle)
  6. 合成/聚合复用原则 (Composition/Aggregation Reuse Principle)
  7. 最少知识原则 (Principle of Least Knowledge)

第二部分:设计模式

创建型模式 (Creational Patterns)
  1. 单例模式 (Singleton Pattern)
  2. 原型模式 (Prototype Pattern)
  3. 工厂方法模式 (Factory Method Pattern)
  4. 抽象工厂模式 (Abstract Factory Pattern)
  5. 建造者模式 (Builder Pattern)
结构型模式 (Structural Patterns)
  1. 适配器模式 (Adapter Pattern)
  2. 桥接模式 (Bridge Pattern)
  3. 组合模式 (Composite Pattern)
  4. 装饰器模式 (Decorator Pattern)
  5. 外观模式 (Facade Pattern)
  6. 享元模式 (Flyweight Pattern)
  7. 代理模式 (Proxy Pattern)
行为型模式 (Behavioral Patterns)
  1. 责任链模式 (Chain of Responsibility Pattern)
  2. 命令模式 (Command Pattern)
  3. 解释器模式 (Interpreter Pattern)
  4. 迭代器模式 (Iterator Pattern)
  5. 中介者模式 (Mediator Pattern)
  6. 备忘录模式 (Memento Pattern)
  7. 观察者模式 (Observer Pattern)
  8. 状态模式 (State Pattern)
  9. 策略模式 (Strategy Pattern)
  10. 模板方法模式 (Template Method Pattern)
  11. 访问者模式 (Visitor Pattern)

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

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

相关文章

玩转大模型行业应用,且看盘古大模型全栈工程能力展身手【云驻共创】

AI技术在金融和工业领域的应用不断扩展,促进了金融行业的数字化转型和产业升级。AI提供了专属财富管家和工业范式的解决方案,在金融领域的应用包括风险评估和投资建议,而在工业领域的应用则涵盖了数据分析和机器人操作。与此同时,…

Python之字典

字典常用操作 import json d {"name":"zz","age":"100"} print(type(d)) # <class dict>s json.dumps(d) # 字典转字符串 print(s) # {"name": "zz", "age": "100"} print(type(s))…

力扣 hot100 最长连续序列 哈希去重 双指针

128. 最长连续序列 ⭐ AC code class Solution {public int longestConsecutive(int[] nums) {if (nums.length 0)// 特判为空的数组&#xff0c;返回0return 0; // set实现去重HashSet<Integer> set new HashSet<>();for (int x : nums)set.add(x);Object[] a…

MyBatis使用注解操作及XML操作

文章目录 1. 注解操作1.1 打印日志1.2 参数传递1.3 增&#xff08;Insert&#xff09;注意1&#xff1a;重命名注意2&#xff1a;返回主键 1.4 删&#xff08;Delete&#xff09;1.5 改&#xff08;Update&#xff09;1.6 查&#xff08;Select&#xff09;1. 配置&#xff0c;…

9、信息打点——CDN绕过篇漏洞回链接口探针全网扫描反向邮件

文章目录 前置知识CDN配置判断CDNCDN绕过 前置知识 传统网站访问&#xff1a;用户访问域名——》解析服务器IP——》访问目标主机 普通CDN&#xff1a;用户访问域名——》CDN节点——》真实服务器IP——》访问目标主机 带WAF的CDN&#xff1a;用户访问域名——》CDN节点&#…

【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏3(附项目源码)

文章目录 先看本次实现的最终效果前言绘制炮塔UI炮塔转向敌人生成炮弹旋转我们的子弹对敌人造成伤害&#xff0c;回收子弹自动发射子弹添加攻击间隔显示伤害字体设计通用泛型单例创建更多炮塔升级增加伤害升级缩短攻击间隔添加货币杀死敌人获取金币源码完结 先看本次实现的最终…

el-checkbox 对勾颜色调整

对勾默认是白色 改的时候一直在试着改color人&#xff0c;其实不对。我用的是element ui 的复选框 /* 对勾颜色调整 */ .el-checkbox__inner::after{/* 是改这里的颜色 */border: 2px solid #1F7DFD; border-left: 0;border-top: 0;}

ssm+vue的药店药品信息管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的药店药品信息管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结…

无法安装ensp ?各种报错解决方案(virtualbox无法运行,启动AR失败,错误代码40等)

安装eNSP。发现软件中路由器无法启动。 VirtualBox是华为eNSP使用的必须运行环境&#xff0c;它提供虚拟网卡设备作为服务器为软件提供运行环境。 1. 提示出现VirtualBox Oracle无法在此项目运行。 我根据百度上的方法&#xff0c;重新还原系统。无果。 之前计算机中安装Vi…

基于混沌博弈算法优化概率神经网络PNN的分类预测 - 附代码

基于混沌博弈算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于混沌博弈算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于混沌博弈优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

【JavaEE初阶】 JavaScript基础语法——壹

文章目录 &#x1f38b;初识JavaScript&#x1f6a9;JavaScript 是什么&#x1f6a9;JavaScript 和 HTML 和 CSS 之间的关系&#x1f6a9;JavaScript 运行过程&#x1f6a9;JavaScript 的组成 &#x1f38d;前置知识&#x1f6a9;第一个JS程序&#x1f6a9;JavaScript 的书写形…

JavaScript中的短路表达式

JavaScript中的短路表达式是一种常见且有用的编程技巧。在本文中&#xff0c;我们将深入探讨什么是短路表达式&#xff0c;并提供一些代码示例来帮助您更好地理解它。 什么是短路表达式&#xff1f; 短路表达式是指在逻辑运算中&#xff0c;如果第一个操作数已经能够确定整个表…

【TIDB】TiDB认证考试PTCA 练习题 题库

1.下列功能是由 TiKV 或 TiFlash 实现的为&#xff1f;&#xff08; 选 2 项 &#xff09; A. 根据集群中 Region 的信息&#xff0c;发出调度指令 B. 对于 OLAP 和 OLTP 进行业务隔离 C. 将关系型数据转化为 KV 存储进行持久化 D. 将 KV 存储转化为关系型数据返回给客户端…

Linux JumpServer 堡垒机远程访问

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f516;系列专栏&#xff1a; C语言、Linux、Cpolar ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5.…

实际案例进行代码设计演进:无状态的类

目录 面向过程封装计算进Task封装计算进Calculator代码演进中做了什么学到了什么 在软件设计中&#xff0c;当选择把一个类设计为有状态后&#xff0c;往往意味着不安全、重量级&#xff0c;需要更多的资源来维护&#xff0c;而无状态在很多场景下是一个非常好的选择。 举个例…

VMware——WindowServer2012R2环境安装mysql5.7.14解压版_主从复制(图解版)

目录 一、服务器信息二、192.168.132.33主服务器上安装mysql&#xff08;主&#xff09;2.1、环境变量配置2.2、安装2.2.1、修改配置文件内容2.2.2、初始化mysql并指定超级用户密码2.2.3、安装mysql服务2.2.4、启动mysql服务2.2.5、登录用户管理及密码修改2.2.6、开启远程访问 …

Redis 9 数据库

4 设置键的生存时间或过期时间 通过EXPIRE命令或者PEXPIRE命令&#xff0c;客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间&#xff08;TimeToLive&#xff0c;TTL&#xff09;&#xff0c;在经过指定的秒数或者毫秒数之后&#xff0c;服务器就会自动删除生存时间…

SPASS-时间序列预测

时间序列的建立和平稳化 填补缺失值 时间序列分析中的缺失值不能采用通常删除的办法来解决&#xff0c;因为这样会导致原有时间序列周期性的破坏&#xff0c;而无法得到正确的分析结果。按“转换→替换缺失值”打开“替换缺失值”对话框。 定义日期变量 展示效果如下

Vue3 customRef自定义ref 实现防抖

防抖就是防止在input 框中每输入一个字符就要向服务器请求一次&#xff0c;只要在用户输入完成过一段时间再读取用户输入的内容就能解决这个问题&#xff0c;减小服务器的压力。 1. 自定义ref是一个函数&#xff0c;可以接受参数。 比如我们自定义一个myRef&#xff1a; setu…

CSDN每日一题学习训练——Python版(搜索插入位置、最大子序和)

版本说明 当前版本号[20231118]。 版本修改说明20231118初版 目录 文章目录 版本说明目录搜索插入位置题目解题思路代码思路参考代码 最大子序和题目解题思路代码思路参考代码 搜索插入位置 题目 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;…