当前位置: 首页 > news >正文

设计模式面试题

设计模式分为

  1. 创建型 工厂模式 单例 原型
  2. 行为性 责任链 迭代器 命令
  3. 中介型
  4. 结构性 适配器 代理 门面  装饰器 组合 桥接

单例设计模式

懒汉式 用到时再创建,省内存

饿汉式 类创建时就创建,会占用内存

内部类  用到时再创建,省内存

线程池、数据库连接池常用

懒汉式

   volatile禁止指令重排

package com.fang.order.controller;public class Singleton {private volatile static Singleton instance;private Singleton() {}public static Singleton getInstance() {if (instance == null) {synchronized (Singleton.class) {if (instance == null) {instance = new Singleton();}}}return instance;}
}

饿汉式 利用jvm类加载机制 

public class Singleton {private static final Singleton instance = new Singleton();private Singleton() {}public static Singleton getInstance() {return instance;}
}

 内部类 

public class Singleton {private static class InnerSingleton {private static Singleton INSTANCE = new Singleton();}private Singleton() {}public static Singleton getInstance() {return InnerSingleton.INSTANCE;}
}

 工厂方法模式

简单工厂、工厂方法、抽象工厂

简单工厂

    在不暴露生成逻辑的前提下生成一个实例  DoorFactory 根据输入的参数来返回不同的实现类。

 

 

工厂方法 

     概念:把生产逻辑移交给子类。

     抽象出一个工厂抽象类,抽象类完成共有的方法,然后每个具体实现类去实现个性化生成部分。

 

 

 

抽象工厂

只有一个产品时是工厂方法;多个产品时就是抽象工厂  比如下图DoorFactory同时生产DoorExpert和Door两个产品。

 

 

模板方法模式

按照一定步骤解决问题时常用

抽象类定义一个共有方法templateMethod,此方法内部调用templateMethod0、templateMethod1。templateMethod0、templateMethod1方法由子类具体实现

此模式应用在HttpServlet、AbstractController等类中

 

 

 

责任链模式

每一步做特定的任务,传给下一步。

优点:扩展性好,耦合性低  劣势:链太长,性能损耗大

 

代理模式

静态代理 代码层面编写,被代理类作为代理类的成员变量,代理类在调用被代理类的方法前后最某些增强。

动态代理 运行时代理。jdk的Class类和cglib实现。

  • jdk :自定义类继承InvocationHandler类,实现invoke方法。构造方法传入被代理类。

(1)jdk方式调用

 

 

http://www.lryc.cn/news/16034.html

相关文章:

  • 需要知道的一些API接口的基础知识
  • 互融云数字资产管理平台综合解决方案
  • 记住这12个要点,你也能打造出让HR和技术主管前一亮的前端简历
  • AQS学习:ReentrantLock源码解析
  • RocketMQ源码分析消息消费机制—-消费端消息负载均衡机制与重新分布
  • 华为OD机试真题Python实现【数据分类】真题+解题思路+代码(20222023)
  • vue项目中引入字体包
  • Linux 文件相关操作
  • 【计算机网络】应用题方法总结
  • Linux 浅谈之性能分析工具 perf
  • 代码随想录-Day7:四数相加、三数之和
  • jsp在线考试系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • 【总结】2023数学建模美赛!收官!
  • C# GDI+ winform绘图知识总结
  • 【研究空间复用及函数调用问题】
  • SQL常用查询语句
  • 【Python实战】一大波高颜值主播来袭:快看,某网站颜值排名,为了这个排名我可是大费周章啦,第一名不亏是你...(人脸检测+爬虫实战)
  • Linux进程学习【三】
  • Spring自动装配的底层逻辑
  • 华为OD机试 - 数组合并(C++) | 附带编码思路 【2023】
  • 在vue3+ts的项目中,如何解决vant组件自带表单校验不生效?
  • 华为OD机试真题Python实现【子序列长度】真题+解题思路+代码(20222023)
  • 【答疑现场】我一个搞嵌入式的,有必要学习Python吗?
  • MySQL存表报错问题 Incorrect string value
  • SAP ABAP DIALOG长文本编辑框
  • 电子技术——负反馈特性
  • 网站移动端性能优化方法
  • 2023年AI语音会议汇总
  • Mybatis持久层框架 | Mapper加载方式、目录结构解析
  • 九龙证券|创业板向未盈利企业敞开大门 考验投行估值定价能力