架构学习之路(一)源码分析 10 设计模式与编程思想总结

本文总结了设计模式,如工厂、单例、原型、适配器、装饰器、代理、观察者、策略和模板模式,并阐述了它们在实际业务中的应用。同时,概述了面向对象、面向切面和面向Bean的编程思想,以及Spring中的AOP和IOC概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

架构学习之路(一)源码分析 9 观察者模式

1.1.4 设计模式总结
  1. 不要生搬硬套 , 根据业务场景选择

  2. 不要把简单的事情复杂化 , 设计模式是用来解决复杂问题 , 把复杂的问题编的简单

  3. 十种设计模式归纳

    1. 工厂模式 ( Factory )

      1. 只对结果负责 , 不管过程
      2. 原始社会—>农耕社会—>小作坊—>工厂—>流水线生产
      3. Spring : BeanFactory , FactoryBean
    2. 单例模式 ( Singleton )

      1. 保证独一无二
      2. 为了提高资源重复利用 , 通过技术手段保证在整个系统运行阶段 , 只有一个实例
      3. Spring 中最常用的 : 注册登记式
      4. 效率性能最高的 : 懒汉式内部类实现
    3. 原型模式 ( Prototype )

      1. 深度克隆

      2. Spring中的对象原型 , 主要是为了配置信息能够被重复使用 , 而且互不干扰

        <bean scope="prototype">
            <list></list>
        </bean>
        
      3. 技术手段 : 实现 cloneable 重写 clone 方法 , 字节码操作

    4. 适配器模式 ( Adapter ) : 转换头 ( 兼容 , 转换 )

    5. 装饰器模式 ( Decorator )

      1. 需要包装 , 但不改变本质 ( 同宗同源 , 扩展 , 覆盖 )
      2. 特殊的 Delegate 与 Adapter 的结合
    6. 代理模式 ( Proxy )

      1. 专人办专事
      2. 完成一件事情 , 代理只参与某一部分的功能
      3. 技术手段 : JDK Proxy ( 实现接口 ) , Cglib ( 继承 ) , Aspectj ( Spring ) , asm ( Spring )
    7. 观察者模式 ( Observer )

      1. 完成后通知
      2. 针对目标对象的一举一动 , 要得到一个反馈
      3. Spring : Monitor , Observer , Listener ( 通常会结合动态代理 )
    8. 策略模式 ( Strategy )

      1. 只要达到目的就行
      2. 将一些固定算法统一起来
      3. 特点 : 巧妙的避免了逻辑判断语句
    9. 模板模式 ( Template )

      1. 流程标准化 , 原料自己加
      2. 流程固定 , 某一个环节有差异
    10. 委派模式 ( Delegate )

      1. 分发工作
      2. Proxy 的特殊情况 , 全权代理
1.1.5 编程思想总结
  1. AOP : Aspect Oriented Programming ( 面向切面编程 )
    1. Dynamic Proxy 是 AOP 的一种技术实现手段
    2. 找出多个类中有一定规律的代码 , 开发时拆开 , 运行时合并 , 即面向规则编程
    3. 多个不相干 ( 规则统一 ) 的切面组合成一个新的产品
    4. 制定一个切面 , 就制定了一个规则
    5. 事务代理 : 加在 service 层的增 , 删 , 改
    6. expression : 切面表达式
    7. 增强功能 , 解耦 , 专人做专事
    8. 确定规则
  2. OOP : Object Oriented Programming ( 面向对象编程 )
    1. 一切皆对象
    2. 用代码去描述生活
    3. 注重事物之间的联系 , 面向过程是关注技术细节和对象
    4. 封装 , 继承 , 多态
    5. 程序员的毛病 : 接到需求就开始做 , 不符合 OOP 思想 , 要先理清楚需求之间的关系
  3. BOP : Bean Oriented Programming ( 面向 Bean 编程 )
    1. 面向 Bean ( 普通的 java 类 ) 设计程序
    2. 一切从 Bean 开始
    3. Spring 提出的编程思想 , 避免一直 new 对象 ( 配置 Hibernate ORM ) , Bean 与 Bean 之间的关系 , 不希望每次人为的重复管理 , 由程序来实现自动管理
  4. IOC : Inversion Of Control ( 控制反转 )
    1. 由 BOP 出现才出现了 IOC , 解决 Bean 管理问题
    2. 创建对象的控制权 ( new ) 反转
      1. 没有 BOP 与 IOC : 谁使用谁控制
      2. 有 BOP 与 IOC : Spring 控制管理
    3. 创建出来后的对象需要统一管理 , 所以才有的 IOC 容器 ( Map )
  5. DI/DL : Dependency Injection ( 依赖注入 ) /Dependency Lookup ( 依赖查找 )
    1. 由 BOP , IOC 后才出现了 DI/DL , 解决对象动态赋值问题 ( 采用反射动态调用getter , setter )
    2. Spring 不仅保存自己创建的对象 , 并且保存对象与对象之间的关系
    3. 注入即赋值 , 主要三种方式 : 构造方法 , set 方法 , 直接赋值
    4. 先理清关系再赋值
    5. Spring 加载步骤
      1. 定位
      2. 载入
      3. 注册
      4. 确定是否初始化 Spring
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值