Java设计原则和设计模式

news/2024/12/22 1:21:29/

目录

第一部分:设计原则

  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.ppmy.cn/news/1231048.html

相关文章

Java中,ArrayList和LinkedList区别区分,简洁

在Java中,ArrayList和LinkedList都是用来存储和管理数据的类 ArrayList是Java中的一个类,它实现了List接口,是一种基于动态数组实现的集合类常用成员方法: 构造方法:ArrayList() 成员方法:add、remov…

MyBatis框架——Mybatis操作数据库之简单的insert操作的实现

入门_MyBatis中文网https://mybatis.net.cn/getting-started.html一些配置文件的模板可以从mybatis的官网中找到。 一、MyBatis操作数据库步骤 1、读取MyBatis配置文件mybatis-config.xml。 mybatis-config.xml作为mybatis的全局配置文件,配置MyBatis的运行环境等…

17.Oracle11g的PL/SQL基础

Oracle11g的PL/SQL基础 一、PL/SQL的体系1、什么是PL/SQL2、PL/SQL 的优缺点2.1 PL/SQL的优点2.2 PL/SQL的缺点 二、PL/SQL的语法1、PL/SQL代码结构(块)2、PL/SQL基本语法2.1 变量声明2.2 流程控制语法 三、oracle的动态SQL 一、PL/SQL的体系 1、什么是P…

大厂秋招真题【栈】Bilibili2019秋招-简单表达式求值

文章目录 题目描述与示例题目描述输入描述输出描述示例输入输出 解题思路代码PythonJavaC时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 题目描述与示例 题目描述 给定一个合法的表达式字符串,其中只包含非负整数、加法、减法以及乘法符号(不…

微信小程序配置企业微信的在线客服

配置企业微信后台 代码实现 <button tap"openCustomerServiceChat">打开企业微信客服</button>methods: {openCustomerServiceChat(){wx.openCustomerServiceChat({extInfo: {url: 你刚才的客服地址},corpId: 企业微信的id,showMessageCard: true,});} …

SpringBoot学习笔记-配置MySQL与实现注册登录模块(中)

笔记内容转载自 AcWing 的 SpringBoot 框架课讲义&#xff0c;课程链接&#xff1a;AcWing SpringBoot 框架课。 CONTENTS 1. 配置JWT验证2. 实现验证登录API3. 实现返回信息API4. 实现注册账号API 本节实现用适合前后端分离的 JWT 验证替代传统的 Session 验证方式&#xff0c…

音视频项目—基于FFmpeg和SDL的音视频播放器解析(十五)

介绍 在本系列&#xff0c;我打算花大篇幅讲解我的 gitee 项目音视频播放器&#xff0c;在这个项目&#xff0c;您可以学到音视频解封装&#xff0c;解码&#xff0c;SDL渲染相关的知识。您对源代码感兴趣的话&#xff0c;请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本…

算法升级之路(七)-盛最多水的容器

给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 原题链接: 盛最多水的容器 解题思路&…