Spring介绍及设计模式

Spring----简化java开发
1.基于pojo的轻量级和最小侵入性编程
2.通过依赖注入和面向接口实现松耦合
3.基于切面和惯例进行声明式编程
4.通过切面和模板减少样板式代码
Spring-----编程思想
1.OOP---Object Oriented Programming(面向对象编程),用程序总结生活中的一切事物
2.BOP---Bean Oriented Programming(面向Bean编程),面向Bean(普通的类)设计程序,解放程序员
3.AOP----Aspect Oriented Programing(面向切面编程)(面向规则编程),找出多个类有一定规律的代码,开发时拆开,运行时合并
4.IoC----Inversion of Control(控制反转)(转交控制权),将new对象的动作交给Spring管理,并由Spring保存已创建的对象
5.DI/DL----Dependency Injection(依赖注入)Dependency Lookup(依赖查找),Spring不仅保存自己创建的对象,而且保存对象之间的关系。
注入即赋值,主要三种方法,构造方法,set方法,直接赋值
Spring设计模式-----工厂模式----封装创建过程,Factory
1.简单工厂模式(由一个CourseFactory接收并生产各种course,相当于老板自己管理店铺)
switch的方式不符合开闭原则    
Class.forName()用字符串确定类太不实用
最优版是用带泛型的类(规定必须继承Course)
2.工厂方法模式(由自己的工厂生产自己的产品,相当于老板手下的几个经理自己管理,老板负责教会经理方法)
3.抽象工厂模式(老板连方法都不用教了,全部工作都照着一个框架执行)

Spring设计模式----单例模式-------确保在任何情况下都只有一个实例(创建型设计模式)
1.饿汉式单例模式(把实例变成常量,绝对的线程安全)
优点:没有任何加锁,执行效率高,用户体验比懒汉模式好
缺点:内存
适用于单例模式较少的案例
改进:把常量实例放进内部类(内部类默认不加载,只有在调用的时候加载),一起解决内存问题和安全问题
2.懒汉式单例模式
被外部类调用的时候才会加载(就是把实例放进get方法里)
缺点:线程不安全
优点:也就省内存了
优化:给方法加synchronized,synchronized 修饰静态方法时锁定的是类
3.双重检查锁单例模式
用synchronized不锁类,锁方法内部,能加快点速度
4.注册式单例模式(反序列化会破坏单例模式,反序列化在将字节码内容转化为Java类时会新建实例,也就是换堆,就不是单一实例了)
防止反序列化对单例模式的破坏(登记式单例模式)(每一个实例有一个唯一标识)--》枚举类型正好符合
5.容器式单例模式(不是绝对线程安全的)
6.基于Thread的单例模式(伪单例)
能保证一个线程中一个实例,多个线程就不好使了

Spring设计模式-----原型模式------分身术
1.浅克隆
相同地址,不同命名
2.深克隆
不同地址,不同命名

Spring设计模式-----代理模式------中间人(结构型设计模式)(注重过程)
1.目的
保护目标对象,增强目标对象
2.原理
代理一般被理解为代码增强,即在源代码前后增加一些代码逻辑,而使调用者无感知
3.静态代理(不遵守开闭原则)
4.动态代理(动态生成代码,符合开闭原则)
(1)jdk动态代理:必须代理接口,生成代理类快,执行效率低(通过反射调用方法)
(2)CGLib动态代理:(全能)生成代理类慢,执行效率高(通过Fast Class直接调用方法)


Spring设计模式-----委派模式-----全权负责的中间人(注重结果)
1.像是代理,但不同之处很明显,代理模式可以在核心方法前后加上自己的方法,并且代理类需要实时找到被代理的类。
 委派需要委派类全权管理每一个被委派类

Spring设计模式-----策略模式------我有很多策略,你来选用哪一个
1.符合开闭原则
2.提高算法的安全性,说白了就是又加一堆不知所为的代码,加强保护措施,降低耦合度
3.客户端必须知道所有的策略,并自行选择哪一种策略
4.策略类巨多,增加了维护难度(代码冗余,但是要提高安全性,必定冗余)

Spring设计模式------模板模式-----自己定制模板,后来者按规矩来
优点
1.将具有相同处理逻辑的代码放在抽象父类中,提高代码复用性
2.子类又可以自己扩展代码,提高代码扩展性,符合开闭原则
缺点
3.类大量增加,增加了系统的服用性
4.父类如果增加抽象方法,所有子类都需要修改,麻烦


Spring设计模式-------适配器(变压器)模式----转换器(应用广泛)
优点
1.提高类的透明,复用性,目标类和适配类耦合,提高程序扩展性,符合开闭原则
缺点
1.复杂,可读性低,过多的使用适配模式会使代码变得极其混乱


Spring设计模式------装饰者模式----包装,同宗同源,在原类基础上包装(强力继承)
1.完全符合开闭原则
2.不同的装饰类有不同的功能
3.也有一般都有的缺点,代码复杂了

Spring设计模式------观察者模式-----在任务完成时通知(聚合)
1.广播通信是其最大的特点
2.使用不当会出现循环调用
3.观察者与被观察对象之间有过多的细节依赖,代码复杂了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值