Java口试--计划模式

瑞星  金牌会员 | 2024-8-15 01:49:47 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 636|帖子 636|积分 1908

计划模式


  
1.单例模式?

单例模式是Java的一种计划思想,用此模式下,某个对象在jvm只允许有一个实例,防止这个对象多次引用创建多个实例斲丧内存。
   

  • 饿汉模式:在类加载的时候就创建,用static修饰直接new出对象。在多线程下是安全的。
  • 懒汉模式:在使用的时候再创建。多线程下不安全,可用sychronized修饰代码块和双重检查机制(DCL)来处理,这里对对象变量加了一个volatile关键字来修饰,保证可见性,因为jvm编译器的优化,对对象重排序,线程访问时给内存地址可能是没有实例化的,这样获取信息都是为null
  

2.代理模式?

代理:一样平常请求服务器,会直接执行核心代码返回效果即可。但我们在返回效果可以附加些功能,比如日记打印,保存等,这些都可以通过代理模式实现。
动态代理有JDK代理和cglib代理。
   

  • JDK代理:这种代理是实现接口,在实现目标接口时,加入附加功能,通过代理类调用目标方法 实现步骤①需要有目标类且实现接口 ②创建一个代理类实现InvoationHandler接口调用invoke方法实现附加功能。③在具体调用方法前调用proxy的newProxyInstance(类加载器,目标对象接口,处理器(也是自定义的代理类))方法创建代理对象,通过代理对象调用目标方法。
  • cglib代理:使用底层的字节码技术,通过字节码技术为一个类创建子类并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势加入附加逻辑。实现步骤:①需要有目标接口 ②创建代理类实现MethodInterceptor接口,重写intercept接口实现附加功能 ③先创建空字节码对象new Enhancer(),设置目标类字节码参数;再创建回调对象;使用字节码创建得到代理对象;末了调用目标类方法
  大家可参考这篇:原文
3.策略模式?

   

  • 策略模式:定义一组算法,将每个算法都封装起来,并且使它们之间可以交换。策略模式让算法独立于使用它的客户而变革。(如刷公交卡差异人使用范例卡)
  • ThreadPoolExecutor()中有个参数是需要输入拒绝策略参数,输入差异的策略方式实现差异的行为。
  大家可参考这篇:原文
4.工厂模式?

工厂模式重要就是创建对象,且不让对象的逻辑暴露给客户端。下面一篇表明比力具体:
转载:原文

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

瑞星

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表