牛客前端刷题—— 设计模式篇
Posted 不苒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客前端刷题—— 设计模式篇相关的知识,希望对你有一定的参考价值。
还在担心面试不通过吗?给大家推荐一个超级好用的刷面试题神器:牛客网,里面涵盖了各个领域的面试题库,还有大厂真题哦!
赶快悄悄的努力起来吧,不苒在这里衷心祝愿各位大佬都能顺利通过面试。
面试专栏分享,感觉有用的小伙伴可以点个订阅,不定时更新相关面试题:面试专栏 。
文章目录
🍉正文
本文内容来源出自 《牛客网》
设计模式
1 观察者模式
参考答案:
观察者模式(Observer)
通常又被称为 发布-订阅者模式 或 消息机制,它定义了对象间的一种一对多的依赖关系,只要当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,解决了主体对象与观察者之间功能的耦合,即一个对象状态改变给其他对象通知的问题
观察者模式JS实现
let observer_ids=0;
let observed_ids=0;
//观察者类
class Observer
constructor()
this.id = observer_ids++;
//观测到变化后的处理
update(ob)
console.log("观察者" + this.id + `-检测到被观察者$ob.id变化`);
//被观察者列
class Observed
constructor()
this.observers = [];
this.id=observed_ids++;
//添加观察者
addObserver(observer)
this.observers.push(observer);
//删除观察者
removeObserver(observer)
this.observers = this.observers.filter(o =>
return o.id != observer.id;
);
//通知所有的观察者
notify(ob)
this.observers.forEach(observer =>
observer.update(ob);
);
let mObserved=new Observed();
let mObserver1=new Observer();
let mObserver2=new Observer();
mObserved.addObserver(mObserver1);
mObserved.addObserver(mObserver2);
mObserved.notify();
2 设计模式有哪些
参考答案:
**设计模式(Design pattern)**是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
常用的设计模式
- 单体模式:单体是一个用来划分命名空间并将一批相关的属性和方法组织在一起的对象,如果他可以被实例化,那么他只能被实例化一次。
- 工厂模式:提供创建对象的接口,意思就是根据领导(调用者)的指示(参数),生产相应的产品(对象)
- 单例模式:单例模式定义了一个对象的创建过程,此对象只有一个单独的实例,并提供一个访问它的全局访问点。也可以说单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。
- 观察者模式(发布订阅模式): 定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新,也被称为是发布订阅模式。
- 策略模式:策略模式指的是定义一些列的算法,把他们一个个封装起来,目的就是将算法的使用与算法的实现分离开来。说白了就是以前要很多判断的写法,现在把判断里面的内容抽离开来,变成一个个小的个体
- 模板模式:定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 通俗的讲,就是将一些公共方法封装到父类,子类可以继承这个父类,并且可以在子类中重写父类的方法,从而实现自己的业务逻辑
- 代理模式:代理模式的中文含义就是帮别人做事,javascript的解释为:把对一个对象的访问, 交给另一个代理对象来操作.
- 外观模式: 外观模式是很常见。其实它就是通过编写一个单独的函数,来简化对一个或多个更大型的,可能更为复杂的函数的访问。也就是说可以视外观模式为一种简化某些内容的手段
🎃专栏分享:
JavaScript相关面试题就更新到这里啦,相关 Web前端面试题 可以订阅专栏哦
🥰
专栏地址:《面试必看》
面试刷题神器:牛客网
⏳ 名言警句:说能做的,做说过的 ! \\textcolorred 名言警句:说能做的,做说过的! 名言警句:说能做的,做说过的!
✨ 原创不易,还希望各位大佬支持一下 \\textcolorblue原创不易,还希望各位大佬支持一下 原创不易,还希望各位大佬支持一下
👍 点赞,你的认可是我创作的动力! \\textcolorgreen点赞,你的认可是我创作的动力! 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向! \\textcolorgreen收藏,你的青睐是我努力的方向! 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富! \\textcolorgreen评论,你的意见是我进步的财富! 评论,你的意见是我进步的财富!
以上是关于牛客前端刷题—— 设计模式篇的主要内容,如果未能解决你的问题,请参考以下文章