我的博客首页:http://blog.csdn.net/m0_37116405
我的GitHub首页:https://github.com/KissLouis


  1. 设计模式六大原则

    1. 开闭原则:对扩展开放,对修改关闭。即在不修改一个软件实体的基础上去扩展其他功能。
    2. 里氏代换原则:在软件系统中,一个可以接受基类对象的地方必然可以接受一个子类对象。
    3. 依赖倒转原则:针对于接口编程,依赖于抽象而不依赖于具体。
    4. 接口隔离原则:使用多个隔离的接口取代一个统一的接口。降低类与类之间的耦合度。
    5. 迪米特法则(最少知道原则):一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
    6. 合成复用原则:在系统中应该尽量多使用组合和聚合关联关系,尽量少使用甚至不使用继承关系。
  2. J2ee常见设计模式,总共23种
    1. 创建型模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式)
    2. 结构型模式(适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式)
    3. 行为型模式(策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式)
  3. 简单工厂模式
    1. 简单工厂模式又叫类的创新型模式,又叫静态工厂方法模型。是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
    2. 简单工厂模式包含的角色
      1. 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,用来创建产品
      2. 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。
      3. 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
  4. 单例模式

    1. 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
    2. 单例模式应用场景
      1. 重量级对象可以采用单例模式创建。例如配置文件解析器,连接工厂等等。
    3. 饿汉单例
      1. 线程安全,在类创建的同时就已经创建好一个静态对象供系统使用,以后不再改变。
    4. 懒汉单例
      1. 延时加载。在加载类时创建实例如果在创建实例对象时不加上synchronized 则会导致该对象的访问不是线程安全的。
  5. 单例模式的优缺点

    1. 优点:由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。
    2. 缺点:由于单例模式中没有抽象层,因此单例类的扩展有很大的困难。滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出;如果实例化的对象长时间不被利用,系统会认为是垃圾而被回收,这将导致对象状态的丢失。
//饿汉单例
public class Singleton {private static final Singleton INSTANCE = new Singleton();// 私有化构造函数private Singleton() {};public static Singleton getInstance() {return INSTANCE;}}
//懒汉单例
public class Singleton {private static Singleton INSTANCE;// 私有化构造函数private Singleton() {public static Singleton getInstance() {if (INSTANCE == null) {INSTANCE = new Singleton();}return INSTANCE;}}

常见面试题,还需补充。
如果本篇博文中存在问题,烦请指出,本人及时修改,谢谢阅读!

[Java面试]六:常见面试题之设计模式相关推荐

  1. 【搞定 Java 并发面试】面试最常问的 Java 并发进阶常见面试题总结!

    本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star![Java学习 面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识.觉得内容不错 ...

  2. java中级程序员面试题_中级Java程序员常见面试题汇总

    下面是一些中级Java程序员常见面试题汇总,你可以用它来好好准备面试. 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器 ...

  3. Java后端工程师常见面试题

    以下是整理的Java后端工程师常见面试题,希望有助于找工作: 1,对Java集合框架的理解.ArrayList和LinkedList的区别和优缺点,以及使用场景.扩容因子了解吗?分别是多少. Java ...

  4. java线程池面试题有哪些?java线程池常见面试题

    进行java面试的过程中,java线程池是必问的面试题目,因为这是java的重点知识,也是在java工作中经常会遇到的,那java线程池面试题有哪些?下面来我们就来给大家讲解一下java线程池常见面试 ...

  5. 「高级java工程师」常见面试题及其答案(持续更新)

    「java工程师」常见面试题及其答案请见: 「java工程师」常见面试题及其答案(持续更新)_好人老李的博客-CSDN博客 目录 java基础 常用的 jvm 调优方法? OOM的常见场景及其原因.解 ...

  6. 「java工程师」常见面试题及其答案(持续更新)

    「高级java工程师」常见面试题及其答案: 「高级java工程师」常见面试题及其答案(持续更新)_好人老李的博客-CSDN博客 目录 java基础 面向对象与面向过程的区别? JRE.JDK.JVM的 ...

  7. Java初级工程师常见面试题

    整理一下自己所经历的高频面试题目.对于一个初级java开发人员的面试,面试时间一般为30~40分钟,有短点的,先写一张笔试卷子,然后面试20分钟,也有长一些的,我最长的一次面试将近2个小时,最后一轮纯 ...

  8. python基础题面试_python常见面试题

    面试自动化会遇到的面试题,分享一波,就不排版了,多多见谅. 先上几道编程题 001 求数值以内的质数,合数及个数 #质数 defzhishu(number): num=0for i in range( ...

  9. Java并发编程—常见面试题

    建议: 学习java并发前需要先掌握JVM知识 关于下面问题档案的详细解析都在后面推荐的相关系列文章中 一.线程安全相关 1.什么叫线程安全? 线程安全就是说多线程访问同一代码,不会产生不确定的结果. ...

最新文章

  1. ElasticSearch聚合aggs入门
  2. 跨域失败 过滤器_跨域问题解决方案
  3. malloc动态分配数组以及指针数组大小
  4. Linux系统的启动引导过程(转)
  5. Linux学习总结(61)——Ansible 快速入门学习
  6. 华为郑叶来:致敬开发者,共创“ AI ”的世界
  7. springbatch读取文件_通过例子讲解Spring Batch入门,优秀的批处理框架
  8. 2017-2018-1 20155315 《信息安全系统设计基础》第11周学习总结
  9. linux试密码3次则屏蔽ip,怎么才能让别人ssh时候输入三次错误密码之后自动屏蔽?...
  10. 计算机pc610台湾研华,研华科技工业电脑各尺寸上架式机箱型号介绍
  11. 【上网】微信能上网,谷歌浏览器上不了网,怎么解决?
  12. 怎么用计算机按log以2为底,计算器上怎么按出log以2为底的数
  13. HTML层级设置,HTML----元素层级
  14. NetSuite 使用库存盘点
  15. 带劲!厂内全流程智能仓储物流系统
  16. 前端学习笔记:CSS学习之选择器篇
  17. 图片热区自适应和设置热区边框
  18. UVa 紫书50题留念
  19. 上海2021高考成绩什么时候可以查询,关于2021年上海高考成绩什么时候出来
  20. 基因组大数据变异检测算法的并行优化

热门文章

  1. SAP年结账务调整过程中的业务改错处理心得
  2. WAMPserver图标由橙色变成绿色
  3. 学系统集成项目管理工程师(中项)系列26_新兴信息技术
  4. STM32CudeMX使用步骤
  5. SQL数据类型 bigint、int、mediumint、smallint、tinyint 取值范围,占位
  6. ssm毕设项目电脑售后服务管理系统cvh7i(java+VUE+Mybatis+Maven+Mysql+sprnig)
  7. 210104-技术分享-漏洞复现-shiro
  8. centos ntp日志_CentOS7下部署NTP Server
  9. 【Python机器学习】KNN进行水果分类和分类器实战(附源码和数据集)
  10. cstdio(cstdio头文件是什么)