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

面试官:谈谈你对设计模式的理解?常见的设计模式有哪些?

时间:2023-03-22 11:14:30 科技观察

本文转载自微信公众号《JS每日一问》,作者慧慧。转载本文请联系JS每日一问公众号。1.这是什么?在软件工程中,设计模式是针对软件设计中普遍存在的各种问题的解决方案。如何解决问题设计模式可以让不稳定性依赖于相对稳定,具体性依赖于相对抽象,避免麻烦的紧耦合,增强软件设计面对和适应变化的能力。因此,当我们遇到合适的场景时,我们可能会很自然地想到适合这种场景的设计模式,这是一种条件反射。比如当系统中某个接口的结构已经不能满足我们现在的业务需求,但是这个接口又不能改,因为原来系统中可能有很多功能依赖这个接口,改接口会涉及到太多的文件。因此,针对这种场景,我们可以很快想到使用适配器模式来解决这个问题。2、常见的设计模式有哪些:单例工厂模式策略模式代理模式中介者模式装饰者模式......单例模式确保一个类只有一个实例,并提供一个全局访问点。实现方法是先判断实例是否存在。如果存在,则直接返回。如果它不存在,它将被创建然后返回。这确保了一个类只有一个实例对象。借给别人看:工厂模式工厂模式通常分为3个角色:工厂角色——负责实现创建所有实例的内部逻辑。抽象产品角色——是所有创建对象的父类,负责描述所有实例共有的公共接口具体产品角色——是创建目标,所有创建的对象都作为这个角色的具体类的实例策略模式策略模式就是定义一系列的算法,把它们一个一个封装起来,至少让它们相互替换。分为两部分:策略类(变量),策略类封装了具体的算法,负责具体的计算过程环境类(不变),接受客户的请求,然后将请求委托给某个策略类代理模式代理模式:为对象提供代理或占位符,以控制对其的访问。比如要实现图片的懒加载功能,首先通过一个loading图片放置一个地方,然后异步加载图片,图片加载完成后加载完成的图片加载到img标签中。中介模式中介模式的定义:通过一个中介对象,所有其他相关对象通过这个中介对象进行通信,而不是相互引用。当其中一个对象发生变化时,只需要通过中介模式通知中介对象,解除对象与对象之间的紧耦合关系。装饰器模式的定义:在不改变对象本身的基础上,在程序运行过程中动态给对象添加方法,通常用于保持原方法不变,然后在原方法上挂载其他方法满足现有需求。3、设计模式的总结和不断学习,对我们会有很大的帮助,主要有:软件系统中总结的成功的、可维护的、可重用的设计方案,可以让我们避免一些重复性的工作。设计模式提供了一套通用的设计词汇和通用的Form,方便开发者之间的沟通和交流,使设计更易于理解大多数设计模式都考虑到了系统的可重用性和可扩展性,这使得我们可以更好地重用一些现有的设计解决方案、功能模块甚至是一个完整的软件系统,避免我们做一些重复的设计,写一些重复的代码。设计模式的合理使用和设计模式使用的文档将帮助其他人更快地理解系统学习设计模式将帮助初学者更深入地理解面向对象的思想。C%8F_(%E8%AE%A1%E7%AE%97%E6%9C%BA)https://juejin.cn/post/6844903795017646094https://segmentfault.com/a/1190000030850326