文章目录

  • Java中的设计模式
    • 设计原则
    • 迭代器模式 + Iterator
    • 适配器模式 + HandlerAdapter
    • 代理模式 + AOP
    • 单例模式 + Spring Bean
    • 模板方法模式 + AQS
    • 工厂模式
      • 简单工厂
      • 工厂方法
    • 建造者模式
    • 桥接模式 + JDBC

Java中的设计模式

设计模式的核心:

  1. 可重用
  2. 可扩展
  3. 高内聚低耦合

设计原则

  1. 开闭原则
  2. 依赖倒置
  3. 迪米特法则
  4. 组合复用
  5. 里氏替换
  6. 单一职责
  7. 接口隔离

迭代器模式 + Iterator

适配器模式 + HandlerAdapter

代理模式 + AOP

单例模式 + Spring Bean

模板方法模式 + AQS

工厂模式

简单工厂

根据不同的参数,来决定创建什么对象!

优势:延迟加载对象,实现根据参数进行对象创建

缺点:难以扩展,违背开闭原则

可结合反射 + 配置文件进行实现,提高扩展性

工厂方法

工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。

优势: 完全实现 开闭原则,实现了可扩展

建造者模式

桥接模式 + JDBC

java复习系列[5] - Java 中的设计模式相关推荐

  1. java复习系列[6] - Java集合

    Java集合 ArrayList的扩容 在add().addAll()方法中判断是否需要扩容 使用 grow() 函数以 1.5 倍的方式进行扩容 HashMap HashMap扩容流程(1.7 与 ...

  2. java复习系列[4] - Java IO

    文章目录 Java IO IO传输 IO读写流程 IO类型 IO的访问方式 缓存IO(标准IO.传统IO) 直接IO 内存映射 总结 Java中IO与NIO的区别 Java NIO 流与缓冲 管道 为 ...

  3. java复习系列[3] - Java虚拟机

    文章目录 Java虚拟机 JRE 和 JDK 整体工作原理 类加载 class文件结构 类加载过程 双亲委派机制 运行时内存区域 整体划分 PC (Program Counter) JVM栈 局部变量 ...

  4. java复习系列[2] - Java多线程

    文章目录 JUC thread 线程状态 sleep() 与 wait() 的异同点 wait() 与 阻塞 的异同点 Some Question !!! 有了**sleep()**为什么还要有**w ...

  5. java复习系列[1] - Java 基础

    文章目录 Java 基础 final static Java的switch支持的数据类型 goto (扫盲 - 一般不用) String 不可变 不可变的优势 序列化 序列化的 *serialVers ...

  6. JAVA复习系列(一)

    ** JAVA复习系列(一) 文章目录 JAVA复习系列(一) 1.1 Java入门(基础概念与常识) 1.1.1Java语言的特点 1.1.2 JVM,JDK,JRE的关系 1.1.2.1 JVM( ...

  7. Java 8系列之Stream中万能的reduce

    Stream系列: Java 8系列之Stream的基本语法详解 Java 8系列之Stream的强大工具Collector Java 8系列之重构和定制收集器 Java 8系列之Stream中万能的 ...

  8. 【JAVA进阶系列】JAVA 设计模式 -- 抽象工厂模式(Abstract Factory)

    [JAVA进阶系列]JAVA 设计模式 -- 抽象工厂模式(Abstract Factory) [1.1]抽象工厂模式简介 抽象工厂者模式的类结构图 AbstractProduct(抽象产品),Abs ...

  9. Java学习系列(十)Java面向对象之I/O流(上)

    IO流 我们知道应用程序运行时数据是保存在内存中的,但由于内存中的数据不可持久保存(如断电或程序退出时数据会丢失),因此需要一种手段将数据写入硬盘或读入内存.面向IO流编程就是一种很好的选择.IO:I ...

最新文章

  1. JS模式:jq中简单的模式--》采摘自js设计(tomxu_version)
  2. mtr命令详解诊断网络路由
  3. Oracle编程入门经典 第7章 表
  4. python sklearn.learning_curve 什么是学习曲线?
  5. 安装 | MatlabR2021b链接及Matlabx运行图基本运行代码与图像
  6. Basic的Json与Xml
  7. 【Android】Eclipse JNI开发
  8. codesys raspberry pi_pi进不去的几种解决方法!
  9. 合作开发过程产生的专利_被起诉专利侵权怎么办?专利律师给你出招!
  10. date()---求N个月后的1号
  11. asp.net中GridView多行表头导出Excel表头显示不全问题解决方法
  12. NB-IoT独立式烟感在出租屋的防火安全应用
  13. PTAM的笔记(二)---ptam移植到android平台
  14. FPS游戏的方框透视+自瞄原理
  15. VC6.0 中文代码显示乱码的问题
  16. 23中设计模式之策略模式
  17. 吴军 阅读与写作50讲 02 如何读懂作者的内心 读后感
  18. 概率论与统计的基础知识(概率空间、最基本的分布、数字特征)
  19. 小程序UI框架minui
  20. shell base64 会自动换行问题

热门文章

  1. 贪吃蛇代码c语言改分,刚学C语言,想写一个贪吃蛇的代码
  2. linux的基本使用方法,Linux/Unix基本使用方法
  3. PipeCAD之管道标准库PipeStd(3)
  4. TortoiseSVN版本管理的注意点
  5. 怎么样使element ui 的table某列变色
  6. jQuery和react实现二维码
  7. git pull 分支问题
  8. Filter过滤器实现同一地址手机和电脑页面不同
  9. ie8 的断字/断行 bug
  10. c++ 23种设计模式_使用Go实现GoF的23种设计模式(三)