总结各种设计模式之间的关联

不要生搬硬套,根据业务场景选择。

不要把简单的事情搞复杂,设计模式用来解决复杂问题。

把复杂的问题变得简单起来(总结利用好前任经验)。

创建型:(只对结果负责,不要三无产品)

  1. 工厂模式
    1. 原始社会 --> 农耕社会 --> 小作坊 --> 工厂 --> 流水线生成
    2. Spring: BeanFactory  FactoryBean
  2. 单例模式(保证独一无二)
    1. 为了提高资源重复利用
    2. 通过技术手段保证在整个系统运行阶段,只有一个实例
    3. 场景:配置文件、监控程序、IOC容器、日历
    4. 实现手段:懒汉式、饿汉式、注册登记式、反序列化处理
    5. Spring中最常用的,注册登记式。效率性能最高的:内部类
  3. 原型模式:复制(拔一根猴毛,吹出千万个)
    1. Spring中的对象原型,主要是为了配置信息能够被重复使用,而且互不干扰
      <bean scope="prototype">
          <list></list>
      </bean>

       

    2. 技术手段:实现cloneable重写clone方法、字节码操作来是实现、通过反射机制来实现(Spring中常用)
  4. 代理模式(办事要求人、所以找代理)
    1. 应用场景:黄牛、中介、经纪人
    2. 代码场景:字节码增强、动态实现非侵入式编程
    3. 完成一件事情:代理只参与某一部分的功能
    4. 技术手段:JDK Proxy,Cglib,AspectJ、asm
    5. 通过代码演示,自己模拟实现了JDK动态代理底层
  5. 策略模式(我行我素,达到目的就行。)
    1. 将一些固定的算法统一起来
    2. 应用场景:旅行路线的选择、出行方式的选择
    3. 代码场景:支付方式的选择
    4. 特点:巧妙地避免if...else... 或者switch语句
  6. 模板方法(流程标准化,原料自己加。)
    1. 流程固定:某一个环节差异
    2. 应用场景:JdbcTemplate、工作流
    3. 代码场景:模拟Spring JdbcTempate的简单实现 spring-orm,单表操作不需要写一句SQL
  7. 委派模式(干活是你的(普通员工),功劳算我的(项目经理))
    1. 代理模式的特殊情况、全权代理
    2. 应用场景:项目经理、Dispatcher
    3. 代码场景:Spring中的ServletDispatcher、Delegate命名结尾的都是委派模式
  8. 适配器模式 兼容、转换(需要一个转换头(兼容))
    1. 应用场景:一拖三充电头、HDMI转VGA、编码和解码
    2. 代码场景:登录,为了兼容旧系统的登录功能,在老系统基础之上进行兼容编程
    3. Spring:Adapter 结尾的
  9. 装饰器模式(需要包装,但不改变本质(同宗同源)。)
    1. 委派 + 适配器,注重的扩展、覆盖,is-a
    2. 应用场景:IO流、数据流
    3. 也用代码改造一个旧系统
    4. 在Spring中Derocator结尾的、Wrapper结尾的都是 
  10. 观察者模式:(完成时通知我。)
    1. 针对于目标对象的一举一动,要得到一个反馈
    2. 应用场景:事件监听、日志监听、短信通知
    3. 代码场景:Listener、Monitor、Observer
    4. Spring Listener(通常会结合动态代理)

待续...

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值