2023年疯狂推荐的Java设计模式面试题目

一、什么是设计模式

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

二、设计模式分类

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

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

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

三、设计模式的六大原则

开放封闭原则(Open Close Principle)

原则思想:尽量通过扩展软件实体来解决需求变化,而不是通过修改已有的代码来完成变化

描述:一个软件产品在生命周期内,都会发生变化,既然变化是一个既定的事实,我们就应该在设计的时候尽量适应这些变化,以提高项目的稳定性和灵活性。

优点:单一原则告诉我们,每个类都有自己负责的职责,里氏替换原则不能破坏继承关系的体系。

里氏代换原则(Liskov Substitution Principle)

原则思想:使用的基类可以在任何地方使用继承的子类,完美的替换基类。

大概意思是:子类可以扩展父类的功能,但不能改变父类原有的功能。子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法,子类中可以增加自己特有的方法。

优点:增加程序的健壮性,即使增加了子类,原有的子类还可以继续运行,互不影响。

依赖倒转原则(Dependence Inversion Principle)

依赖倒置原则的核心思想是面向接口编程.

依赖倒转原则要求我们在程序代码中传递参数时或在关联关系中,尽量引用层次高的抽象层类,

这个是开放封闭原则的基础,具体内容是:对接口编程,依赖于抽象而不依赖于具体。

接口隔离原则(Interface Segregation Principle)

这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。

例如:支付类的接口和订单类的接口,需要把这俩个类别的接口变成俩个隔离的接口

迪米特法则(最少知道原则)(Demeter Principle)

原则思想:一个对象应当对其他对象有尽可能少地了解,简称类间解耦

大概意思就是一个类尽量减少自己对其他对象的依赖,原则是低耦合,高内聚,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。

优点:低耦合,高内聚。

单一职责原则(Principle of single responsibility)

原则思想:一个方法只负责一件事情。

描述:单一职责原则很简单,一个方法 一个类只负责一个职责,各个职责的程序改动,不影响其它程序。 这是常识,几乎所有程序员都会遵循这个原则。

优点:降低类和类的耦合,提高可读性,增加可维护性和可拓展性,降低可变性的风险。

四、解释Java设计模式的优势?

设计模式可在多个项目中重复使用。

设计模式提供了有助于定义系统体系结构的解决方案。

设计模式记录了软件工程经验。

设计模式为应用程序的设计提供了透明度。

由于它们是建立在专家软件开发人员的知识和经验之上的, 因此它们得到了验证和充分证明。

五、什么是四人帮(GOF)?

1994年, 四位作者Erich Gamma, Ralph Johnson, Richard Hel和John Vlissides出版了一本书, 标题为”可重用的面向对象软件的设计模式元素”。本书介绍了软件开发中设计模式的概念。

这四位作者被称为”四个GOF的帮派”。

六、什么是创作模式?

创新设计模式与创建对象的方式有关。在实例化类时做出决定时, 将使用创建设计模式。

EmpRecord e1 =新的EmpRecord();

由于new关键字用于在Java中创建对象, 因此, 这里我们使用new关键字创建实例。在某些情况下, 必须根据程序的性质更改对象的性质。在这种情况下, 我们应该使用创新的设计模式来提供更通用, 更灵活的方法。

七、什么是工厂模式?

它是Java中最常用的设计模式。

这些设计模式属于创建模式, 因为该模式提供了创建对象的最佳方法之一。

在Factory模式中, 我们不向客户端公开创建逻辑, 而不会使用标准接口引用创建的对象。

工厂模式允许子类选择要创建的对象的类型。

工厂模式也称为虚拟构造函数。

以上就是“2023年疯狂推荐的Java设计模式面试题目”,你能回答上来吗?如果想要了解更多,请点击:Java面试题

你可能感兴趣的:(java,设计模式,面试)