设计模式面试题, 23 种设计模式分为哪三大类?
设计模式面试题, 23 种设计模式分为哪三大类?
QA
Step 1
Q:: 23
种设计模式分为哪三大类?
A:: 23
种设计模式通常分为三大类:创建型模式、结构型模式和行为型模式。
1.
创建型模式:处理对象创建的模式,这些模式主要用于解决对象实例化时遇到的各种问题。包括单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式等。
2.
结构型模式:处理类或对象组合的模式,旨在帮助组成复杂的系统。包括适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式和代理模式。
3.
行为型模式:处理对象之间的通信与职责分配的模式。这些模式专注于对象之间的交互。包括模板方法模式、策略模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、解释器模式和中介者模式。
Step 2
Q:: 单例模式是什么?它解决了什么问题?
A:: 单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。它主要解决了在系统中只需要一个对象的场景,例如配置类、日志记录类、线程池等。单例模式避免了系统中有多个实例导致的资源浪费或不一致性问题。
Step 3
Q:: 工厂方法模式和抽象工厂模式有什么区别?
A:: 工厂方法模式是一种创建型模式,它定义了一个接口用于创建对象,但将实际创建的工作推迟到子类中。每个子类负责实例化一个具体的类。
抽象工厂模式也是一种创建型模式,它提供一个接口来创建一系列相关或互相依赖的对象,而不需要指定具体的类。抽象工厂模式通常用于需要生成多个相关产品的场景,而工厂方法模式则适用于创建单个产品。
Step 4
Q:: 为什么要使用装饰模式?
A:: 装饰模式是一种结构型设计模式,允许向现有对象添加新功能,而不改变其结构。它通过将对象放入特殊的封装对象中来实现功能扩展,这些封装对象在应用功能前后可以执行附加行为。装饰模式适用于需要动态地扩展类的功能,且不希望通过继承来增加新功能的场景。
Step 5
Q:: 观察者模式的主要应用场景是什么?
A:: 观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都会自动收到通知并更新。观察者模式常用于事件处理系统、数据模型与视图分离的场景中,例如MVC架构中的Model和View之间的关系,或消息推送系统中订阅者接收通知的机制。