1、说一下你熟悉的设计模式?
设计模式是软件开发中的一种常见解决方案,用于解决特定类型的问题。
- 单例模式(Singleton Pattern):确保一个类只有一个实例存在。懒汉式(先声明变量,等到实际用到时再创建对象)饿汉式(直接创建对象)
- 工厂模式(Factory Pattern):定义一个创建对象的接口,但让子类决定实例化哪个类。
- 观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,当一个对象状态发生改变时,所有依赖它的对象都会得到通知并自动更新。
- 策略模式(Strategy Pattern):定义一系列算法,将每个算法都封装起来,并使它们可以相互替换。
- 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。
2、简单工厂和抽象工厂有什么区别?
- 简单工厂
由一个工厂对象创建产品实例,简单工厂模式的工厂类一般是使用静态方法,通过不同的参数创建不同的对象的实例。可以生产结构中的任意产品,不能增加新的产品。 - 抽象工厂
提供一个创建一系列相关或相互依赖对象的接口,而无需制定他们具体的类,生产多个系列产品,生产不同产品族的全部产品,不能新增产品,可以新增产品族。
3、什么是设计模式?
设计模式是一种在软件开发中解决常见问题的模板。它们是经验的总结,可以被用来解决在软件开发中遇到的特定问题。
4、单例模式是什么?它有什么特点?
单例模式是一种创建型模式,它确保一个类只有一个实例,并提供一个全局访问点。特点包括懒汉式和饿汉式实现,线程安全问题等。
5、工厂方法模式和抽象工厂模式有什么区别?
工厂方法模式是一种创建型模式,用于创建一个接口的实例,但是由子类决定实例化哪一个类。抽象工厂模式是一种结构型模式,用于创建一系列相关或依赖对象,而不需要指定它们具体的类。
6、适配器模式有什么用途?
适配器模式是一种结构型模式,用于使原本因接口不兼容而不能一起工作的类可以一起工作。它通常用于将一个类的接口转换成客户端所期望的另一种接口。
7、观察者模式是什么?它在实际开发中如何应用?
观察者模式是一种行为型模式,定义了对象间的一种一对多的依赖关系,当一个对象改变状态时,所有依赖于它的对象都会得到通知并自动更新。在实际开发中,如事件监听、注册中心等场景会用到观察者模式。
8、装饰者模式和代理模式有什么区别?
装饰者模式是一种结构型模式,允许用户在不修改对象自身的基础上,向一个对象添加新的功能。代理模式也是一种结构型模式,为其他对象提供一个代替或占位符,以控制对它的访问。
9、什么是命令模式?它有什么好处?
命令模式是一种行为型模式,将请求封装为一个对象,从而让你使用不同的请求、队列或日志请求来参数化其他对象。它的好处包括解耦请求的发送者和接收者,以及支持撤销操作。
10、解释一下迭代器模式和组合模式的区别?
迭代器模式是一种行为型模式,提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。组合模式是一种结构型模式,允许你将对象组合成树形结构以表示"部分-整体"的层次结构。
11、解释一下策略模式和模板方法模式的区别?
策略模式是一种行为型模式,定义了一系列的算法,并将每一个算法封装起来,使它们可以相互替换,此模式让算法的变化独立于使用算法的客户。模板方法模式是一种行为型模式,定义一个操作中算法的框架,将一些步骤的执行延迟到子类中。