专栏首页Java Life每天一道面试题 | day06

每天一道面试题 | day06

取得成就时坚持不懈,要比遭到失败时顽强不屈更重要。

----拉罗什夫科

第六题

1.简述下你了解的设计模式?

(1)设计模式的分类(加粗为常用)

1)设计模式的六大原则:

①开闭原则(Open Closed Principle,OCP);

②里氏代换原则(Liskov Substitution Principle,LSP);

③依赖倒转原则(Dependency Inversion Principle,DIP);

④接口隔离原则(Interface Segregation Principle,ISP);

⑤合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP);

⑥最小知识原则(Principle of Least Knowledge,PLK,也叫迪米特法则);

2)总体来说设计模式分为三大类:

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

(2)单例模式

1)单例类只能有一个实例。

2)单例类必须自己创建自己的唯一实例。

3)单例类必须给所有其他对象提供这一实例。

线程安全的饿汉式

(3)工厂模式

意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

主要解决:主要解决接口选择的问题。

何时使用:我们明确地计划不同条件下创建不同实例时。

如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。

关键代码:创建过程在其子类执行。

(4)装饰者模式

意图:装饰者模式通过组合的方式扩展对象的特性,这种方式允许我们在任何时候对对象的功能进行扩展甚至是运行时扩展。

主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。

何时使用: 在不想增加很多子类的情况下扩展类。

如何解决:将具体功能职责划分,同时继承装饰者模式。。

关键代码:①Component 类充当抽象角色,不应该具体实现。②修饰类引用和继承 Component 类,具体扩展类重写父类方法。

写在后面

本文章将以“指导面试,智取Offer”为宗旨,为广大Java开发求职者扫清面试道路上的障碍,成为面试官眼中的精英,朋友圈里的大神。在面试场上“胸有成竹”,坦然面对每个面试官的“拷问”,做到进可攻“项目经理、项目总监”等高级职务,视之为翘首可及;退可守“Java工程师、Java测试工程师”等职务,视之为探囊取物。无论进退、皆可立于不败之地。

The end

本文分享自微信公众号 - Java Life(gh_beea63cf3162),作者:々仗剑走天涯

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 程序员逻辑测试题(17)

    主要还是充分与必要条件的理解:如果A能推导到B,那A就是B的充分条件,而B是A的必要条件。

    剑走天涯
  • Java SE | 每日作业卷day10

    定义老师类和学生类,然后写代码测试;最后找到老师类和学生类当中的共性内容,抽取出一个父类,用继承的方式改写代码,并进行测试。

    剑走天涯
  • 每天一道面试题 | day07

    GET请求获取Request-URI所标识的资源,例如:在浏览器的地址栏中输入网址的方式访问网页时,浏览器采用GET方法向服务器获取资源。

    剑走天涯
  • Spring的设计模式快速入门干货

    设计模式是一套被反复使用的、多数人知晓的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。

    全菜工程师小辉
  • 设计模式~行为模式

    行为模式(Behavioral Pattern)是对不同的对象之间划分责任和算法的抽象化。

    Vincent-yuan
  • 一文读懂七大设计原则及GoF 23种设计模式

    GoF23种设计模式来源于《Design Patterns: Elements of Reusable Object-Oriented Software》,即后...

    魏晓蕾
  • 设计模式|结构图汇总

    1 创建型模式 1 工厂方法模式 ? 2 抽象工厂模式 ? 3 单例模式 ? 4 建造者模式 ? 5 原型模式 ? 2 结构型模式 1 适配器模式 ? 2 装饰...

    double
  • 23种设计模式

    易兒善
  • 如何用一句话总结23种设计模式

    创建型模式简单来说就是用来创建对象的。一共有五种:单例模式、建造者模式、工厂方法模式、抽象工厂模式、原型模式。

    lyb-geek
  • 为什么学习JavaScript设计模式,因为它是核心

    那么什么是设计模式呢?当我们在玩游戏的时候,我们会去追求如何最快地通过,去追求获得已什么高效率的操作获得最好的奖品;下班回家,我们打开手机app查询最便捷的路线...

    达达前端

扫码关注云+社区

领取腾讯云代金券