java模式研究

不要把简单的事情搞复杂,设计模式用来解决复杂的问题的
1.创建模型:
1.1 工厂模式:原始社会–》农耕社会-》小作坊
spring中BeanFactory factoryBean

单例模式:为了提高资源重复利用
通过技术手段保证在整个系统运行阶段,只有一个实例
场景:配置文件、监控程序、IOC容器、日历
实现手段:懒汉式、饿汉式、注册登记式、反序列化处理
spring常用的是注册登记式,效率性能最高的:内部类

原型模式:复制
spring中的对象原型,主要是为了配置信息能够被重复使用,而且互不干扰

代理模式:
应用场景:中介、黄牛、经纪人
代码场景:字节码增强、动态实现非侵入式编程
完成一件事情:代理只参与某一部分的功能
技术手段:JDK Proxy 、Cglib、aspetj、asm

策略模式:将一些固定的算法统一起来
应用场景:旅游路线的选择、出行方式的选择
代码场景:支付方式的选择
特点:巧妙地避免if …else…或者switch语句

模板方法:流程固定,某个环节有差异
应用场景:JDBCTemplate、工作流
代码场景:模拟spring JDBCTemplat的简单实现
spring-orm, 单表操作不需要写一句SQL

委派模式:代理的模式特殊情况,全权代理(代理模式+策略模式)
应用场景:项目经理、Dispatcher
代码场景:Spring中的ServletDispatcher、Delegate命名结尾的都是委派模式

适配器模式:兼容、转换
应用场景:一拖三充电头、HDMI转VGA、编码和解码
代码:登录,为了兼容旧系统的登录功能,在老系统基础之上进行兼容编程
sparing Adapter结尾的

装饰器模式:委派+适配器,注重扩展、覆盖,is-a(同源同宗)
应用场景:IO流、数据源
也用代码改造一个旧的系统
在spring中的derocator结尾的、wrapper结尾的都是

观察者模式:针对于目标对象的一举一动,要得到一个反馈
应用场景:事件监听、日志监听、短信通知
代码:Listenter、monitor、observe

单利模式(饿汉式)
package singleton;

/**

  • 默认使用LazyTwo的时候,会先初始化内部类

  • 如果没有使用的话,内部类是不加载的

  • @author wei.zhou
    */
    public class LazyTwo {
    private LazyTwo(){}
    //

    public static final LazyTwo getInstance(){
    return LazyHolder.LAZY;
    }
    private static class LazyHolder{
    private static final LazyTwo LAZY = new LazyTwo();
    }
    }
    饿汉式:在实例使用之前,不管你用不用,我都先new出来再说,避免了线程安全问题
    懒汉式:默认加载的时候不实例化,在需要用到这个实例的时候才实例化,演示加载
    注册登记式:每使用一次,都往一个固定的容器中注册并且将使用过的对象进行缓存,下次去取对象的时候,就直接从缓存中取值,以保证每次获取的都是同一个对象
    IOC中的单例模式,就是典型的注册登记式单例
    序列化与反序列化保证单例:重写readResolve

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值