设计模式面试题

设计原则最重要的是开放封闭原则对扩展开放可扩展),对修改关闭保持原有的功能不被破坏使其稳定);

  •     适配器模式:将一些不兼容的接口,变成我们所期望的接口

         应用场景:

             在数据处理上,将不同格式的数据经过转换变成一个标准的数据格式。

             1.处理时间格式化的函数

             2.给函数的参数 进行默认值处理

             3.vue里面的计算属性computed,将一个值变成一个可以展示在页面上的数据

  •    装饰器模式:不改变原有的功能,去扩展一些其他功能

          应用场景:react的高阶组件,接受一个组件 返回一个增强的组件

  •    代理模式:由于一个对象不能直接使用另一个对象,需要通过代理对象在这两个对象之间起到中介作用。

          应用场景:es6的Proxy,解决跨域

  •     外观模式:主要目的是对外提供一个简化的接口给客户端使用,隐藏底层复杂的逻辑

        应用场景:rudux库对外暴露了combineReducer、compose、createStore等方法给用户使用。

  •    观察者模式:有两个角色,观察者与被观察者,被观察者与观察者之前存在一对多的依赖关系。观察者会被注册到被观察者里,当被观察者发生变化的时候,通知所有观察者进行更新操作。

      特点是:观察者与被观察者是耦合的,并且观察者的更新方法是由被观察者来调用的

      应用场景:

         1.前端里的事件系统就是典型的观察者模式的应用,当事件触发时,注册的事件就会被执行。

          2.另外Promise的实现原理,当状态为Pending时会将then的成功和失败回调分别存放在成功和失败的任务队列数组里,等状态发生变化的时候去依次执行回调函数。

          3.redux的subscribe

  •   发布订阅模式(23种设计模式中并没有这个,它是观察者模式的一个别称):三个角色,发布者、订阅者以及调度中心。发布者与订阅者不直接通信,而是通过中介来通信。发布者与订阅者之间耦合度低。

vue的双向绑定原理就用到了发布订阅模式

代理模式VS 适配器模式;代理模式VS装饰器模式 

        适配器模式主要目的是将不同的接口,通过一个适配方法,转成客户端需要的接口

代理模式主要目的是为对象提供一个间接访问的方式。注重对对象的访问和控制。

       装饰器模式主要目的是原有的功能不变的基础上,通过包装盒装饰的方式给对象做一些增强的功能。注重对对象的功能扩展

参考文章:

jsliang 求职系列 - 45 - 设计模式系列汇总 - 掘金

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值