当前位置: 首页 > 科技观察

设计模式面试题解答背诵版

时间:2023-03-20 20:07:11 科技观察

简述设计模式的七大原则开闭原则:对扩展开放,对修改封闭。当程序需要扩展时,不能人为修改原有代码,达到热插拔的效果。单一职责原则:一个类、接口或方法只负责一个职责,可以降低代码复杂度,降低代码变更带来的风险。依赖倒置原则:对于接口编程,编程依赖于抽象类或接口,而不是具体的实现类。接口隔离原则:在不同的接口中定义不同的函数,实现接口隔离。里氏替换原则:基类可以出现的地方,子类就必须出现。Dimiter原则:每个模块应该尽可能少的了解和依赖其他模块,以降低代码耦合。合成复用原则:尽量使用组合(has-a)/聚合(contains-a)代替继承(is-a)来达到软件复用的目的。简述设计模式的分类创建方式:在创建对象的同时隐藏创建逻辑,不使用new直接实例化对象。模式包括工厂方法模式、抽象工厂模式、单例模式、建造者模式和原型模式。结构型模式:通过类和接口之间的继承和引用创建具有复杂结构的对象。这种模式包括Adapter模式、Decorator模式、Proxy模式、Appearance模式、Bridge模式、Composite模式、Flyweight模式。行为模式:类之间通过不同的通信方式实现不同的行为。这种模式包括策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访客模式、中介模式、解释器模式。简单工厂模式简介简单工厂模式是指通过一个工厂对象来创建实例,适用于工厂类负责创建的对象较少的情况。示例:Spring中的BeanFactory使用简单的工厂模式来生成Bean对象。工厂模式简述工厂方法模式是指定义一个创建对象的接口,让接口的实现类决定创建哪个对象,让类的实例化推迟到子类。例子:Spring的FactoryBean接口的getObject方法也是一个工厂方法。抽象工厂模式简介抽象工厂模式是指提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。示例:java.sql.Connection接口。单例模式简述一个单例类在任何情况下都只有一个实例。饿汉式现实publicclassSingleton{privateSingleton(){}privatestaticSingletoninstance=newSingleton();publicstaticSingletongetInstance(){returninstance;}}懒汉式现实publicclassSingleton{privateDoubleCheckSingleton(){}privatestaticSingletoninstance;publicstaticSingletongetInstance=={null(if(){if()(Singleton.class){if(instance==null){instance=newSingleton();}}}returninstance;}}代理模式简述代理模式为其他对象提供代理,控制对这个对象的访问。优点是可以增强目标对象的功能,减少代码耦合,扩展性好。缺点是在客户端和目标对象之间加入代理对象会减慢请求处理速度,增加系统的复杂度。静态代理:代理类的字节码文件在程序运行前就已经存在,代理类与委托类的关系在运行前就已经确定。动态代理:代理是在程序运行过程中动态生成的,所以没有代理类的字节码文件。代理类和委托类的关系是在程序运行时确定的。适配器模式简介适配器模式将一个接口转换成客户想要的另一个接口,使那些接口不兼容的类可以协同工作。模板模式简称模板模式定义了一个算法在一个操作中的骨架,将一些步骤推迟到子类中,适用于将子类中的重复代码提取到一个共同的父类中。固定部分可以封装,可变部分可以扩展。但是每一个不同的实现都需要一个子类来维护,这样会增加类的数量。装饰器模式简述装饰器模式可以动态地为对象添加一些额外的属性或行为,即当你需要修改原有功能,但又不想直接修改原有代码时,设计一个Decorator来覆盖原始代码。简单来说,观察者模式观察者模式代表了对象之间的一种依赖关系。当一个对象的状态发生变化时,所有依赖它的对象都会收到通知并自动更新。