设计模式-面试题

这篇具有很好参考价值的文章主要介绍了设计模式-面试题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实际应用

  • 项目中使用到的设计模式

    • 模板方法模式、工厂方法模式、外观模式、建造者模式
  • Spring中使用到的设计模式

    • 代理模式、单例模式、观察者模式

二、设计模式分类

设计模式(Design Pattern)是一套被反复使用、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被理解、提高代码的可靠性。文章来源地址https://www.toymoban.com/news/detail-833030.html

  • 创建型:主要用于创建对象,包括各种工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
  • 结构型:主要用于处理类和对象的组合。包括桥接模式、适配器模式、装饰者模式、代理模式、组合模式、外观模式、享元模式等。
  • 行为型:主要用于描述类或对象如何交互和怎样分配职责。包括策略模式、解释器模式、命令模式、观察者模式、迭代器模式、模板方法模式、访问者模式。

三、创建型

1、工厂方法模式(Factory Method)

  • 定义一个用于创建对象的接口,让子类决定将哪一个类实例化。
//创建接口
public interface Shape {  
    void draw();  
}

//具体实体类
public class Rectangle implements Shape {  
    @Override  
    public void draw() {  
        System.out.println("Inside Rectangle::draw() method.");  
    }  
}  
  
public class Square implements Shape {  
    @Override  
    public void draw() {  
        System.out.println("Inside Square::draw() method.");  
    }  
}  

//创建工厂生成具体实例
@Component  
public class ShapeFactory {  
    private Map<String, Shape> shapeMap = new HashMap<>();  
  
    public ShapeFactory() {  
        shapeMap.put("CIRCLE", new Circle());  
        shapeMap.put("RECTANGLE", new Rectangle());  
        shapeMap.put("SQUARE", new Square());  
    }  
  
    public Shape getShape(String shapeType){  
        return shapeMap.get(shapeType);  
    }  
}

2、抽象工厂模式(Abstract Factory)

  • 提供一个创建对象的接口,而无需指定它们具体的类。(创建多个工厂)
//创建接口
public interface Animal {  
    void speak();  
}

//具体实体类
public class Dog implements Animal {  
    @Override  
    public void speak() {  
        System.out.println("Woof!");  
    }  
}  
  
public class Cat implements Animal {  
    @Override  
    public void speak() {  
        System.out.println("Meow!");  
    }  
}

//抽象工厂
public abstract AnimalFactory {
    public abstract Animal createAnimal();  
}

//创建实现该抽象工厂类的具体工厂类:
public class DogFactory extends AnimalFactory {  
    @Override  
    public Animal createAnimal() {  
        return new Dog();  
    }  
}  

public class CatFactory extends AnimalFactory {  
    @Override  
    public Animal createAnimal() {  
        return new Cat();  
    }  
}

3、单例模式(Singleton)

  • 确保一个类只有一个实例,并提供一个全局访问点
  • 单例被破坏的场景
    • 反射、反序列化、克隆、指令重排、多线程
//饿汉式
public class Singleton {  
    private static Singleton instance = new Singleton();  
    private Singleton() {}  
    public static Singleton getInstance() {  
        return instance;  
    }  
}
//懒汉式
public class Singleton {  
    private static Singleton instance;  
    private Singleton() {}  
    public static synchronized Singleton getInstance() {  
        if (instance == null) {  
            instance = new Singleton();  
        }  
        return instance;  
    }  
}
//DCL
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;  
   

到了这里,关于设计模式-面试题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式面试题(七)

    模板方法模式是一种行为设计模式,它在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 以下是一些使用模板方法模式的常见情况: 固定的算法框架,但有可变的具体步骤:

    2024年04月12日
    浏览(31)
  • 【面试题】如何理解 前端设计模式-测策略模式?

    前端面试题库 ( 面试必备)              推荐:★★★★★ 地址:前端面试题库 【国庆头像】- 国庆爱国 程序员头像!总有一款适合你! 策略(Strategy)模式的定义:该模式定义了一 系列算法 ,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响使用

    2024年02月07日
    浏览(68)
  • Java面试题--设计模式

    一、Java 中有几种设计模式? Java 中一般认为有 23 种设计模式 分为三大类: 1. 创建型模式 5 种 ① 工厂方法模式 ② 抽象工厂模式 ③ 单例模式 ④ 建造者模式 ⑤ 原型模式 2. 结构型模式 7 种 ① 适配器模式 ② 装饰器模式 ③ 代理模式 ④ 外观模式 ⑤ 桥接模式 ⑥ 组合模式 ⑦

    2024年02月12日
    浏览(40)
  • Java 大厂八股文面试专题-设计模式 工厂方法模式、策略模式、责任链模式

            在平时的开发中,涉及到设计模式的有两块内容,第一个是我们 平时使用的框架 (比如spring、mybatis等),第二个是我们自己开发业务使用的设计模式。         面试官一般比较关心的是你在开发过程中, 有没有使用过设计模式,或者你在简历上写了关于设计

    2024年02月10日
    浏览(56)
  • 设计模式与技术场景面试题详解

     

    2024年02月16日
    浏览(40)
  • C++面试:单例模式、工厂模式等简单的设计模式 & 创建型、结构型、行为型设计模式的应用技巧

            理解和能够实现基本的设计模式是非常重要的。这里,我们将探讨两种常见的设计模式:单例模式和工厂模式,并提供一些面试准备的建议。 目录 单例模式 (Singleton Pattern) 工厂模式 (Factory Pattern) 面试准备  1. 理解设计模式的基本概念 2. 掌握实现细节 3. 讨论优缺

    2024年02月01日
    浏览(67)
  • 极高频率出现的设计模式面试题

    设计模式是Java工程师日常工作中非常重要的一个技能,可以使用设计模式重构整体的架构代码、提交代码复用性、扩展性等等,如果大家想要成为Java工程师那么这项技能是必须会的,如果大家正处于找工作阶段,那么这套战略性的设计模式面试题就需要你掌握它。 1.什么是

    2024年02月05日
    浏览(34)
  • JavaSE面试题02:单例设计模式

    来源: https://www.runwsh.com/archives/biitngg1f7s0000 1.什么事Singleton? Singleton:在Java中 即指单例设置模式,探视软件开发最常用的设置模式之一 通俗解释:单例模式 单:唯一 例:实例 单例设计模式,即某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式 例如:代表

    2024年02月05日
    浏览(40)
  • C++面试之线程池、智能指针、设计模式

    一、线程池 1、线程池实现步骤 这里就讲讲正常的一个线程池的实现步骤。 1.1 定义任务类:首先需要定义一个任务类,用于封装需要在线程池中执行的任务。任务类至少应该包含一个执行任务的方法,可以是一个函数指针或者是一个函数对象。 1.2 定义线程池类:接下来定义

    2024年01月16日
    浏览(52)
  • 软件测试面试真题 | 什么是PO设计模式?

    面试官问:UI自动化测试中有使用过设计模式吗?了解什么是PO设计模式吗? 考察点 《page object 设计模式》:PageObject设计模式的设计思想、设计原则 《web自动化测试实战》:结合PageObject在真实项目中的实践与应用情况 传统UI自动化的问题 无法适应 UI 频繁变化 无法清晰表达

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包