#Javascript实用效果整理

JavaScript设计模式样例十六 —— 备忘录模式

备忘录模式(MementoPattern)定义:保存一个对象的某个状态,以便在适当的时候恢复对象。目的:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。场景:数据缓存。letgetPageData=(()=>{letcache={}return(page,fn)=>{if(cac...

JavaScript设计模式样例十五 —— 状态模式

状态模式(StatePattern)定义:创建表示各种状态的对象和一个行为随着状态对象改变而改变的context对象。目的:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。场景:游戏角色有跳跃、移动、射击、蹲下等状态设定,如果用if-else或者switch来进行判断,在遇到组合动作的时候,判断会...

JavaScript设计模式样例十四 —— 观察者模式

观察者模式(ObserverPattern)定义:当一个对象被修改时,则会自动通知它的依赖对象。目的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。场景:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。classSub...

JavaScript设计模式样例十三 —— 模版方法模式

模板方法模式(TemplateMethodPattern)定义:一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。目的:一些方法通用,却在每一个子类都重新写了这一方法。场景:在造房子的时候,地基、走线、水管都一样,只有在建筑的后期才有加壁橱加栅栏等差异。//...

JavaScript设计模式样例十二 —— 享元模式

享元模式(FlyweightPattern)定义:减少创建对象的数量,以减少内存占用和提高性能。目的:用共享技术有效地支持大量细粒度的对象。场景:系统中有大量对象。//构建享元对象classModal{constructor(id,gender){this.gender=genderthis.name=`${gende...

JavaScript设计模式样例十一 —— 外观模式

外观模式(FacadePattern)定义:隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。目的:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。场景:客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。//通过一个接口封装其他...

JavaScript设计模式样例十 —— 组合模式

组合模式(CompositePattern)定义:又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。目的:将对象组合成树形结构以表示"部分-整体"的层次结构。场景:您想表示对象的部分-整体层次结构(树形结构),如:文件系统。//指令letdirective={eat:{excute:()=>{conso...

JavaScript设计模式样例九 —— 桥接模式

桥接模式(BridgePattern)定义:是用于把抽象化与实现化解耦,使得二者可以独立变化。目的:将抽象部分与实现部分分离,使它们都可以独立的变化。场景:实现系统可能有多个角度分类,每一种角度都可能变化。leteach=(arr,fn)=>{for(leti=0;i<arr.length;i++){let...

JavaScript设计模式样例八 —— 适配器模式

适配器模式(AdapterPattern)定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。目的:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。场景:系统需要使用现有的类,而此类的接口不符合系统的需要。cla...

JavaScript设计模式样例七 —— 原型模式

原型模式(PrototypePattern)定义:用于创建重复的对象,同时又能保证性能。目的:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。场景:在运行期建立和删除原型。letproductPrototype={init:(type)=>{this.type=type},getType:()=&...

JavaScript设计模式样例六 —— 抽象工厂模式

抽象工厂模式(AbstractFactoryPattern)定义:抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。或者说,是其他工厂的工厂。目的:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。场景:系统的产品有多于一个的产品族,而系统只消费其中某一族的产品。classUse...

JavaScript设计模式样例五 —— 建造者模式

建造者模式(BuilderPattern)定义:使用多个简单的对象一步一步构建成一个复杂的对象。目的:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。场景:一些基本部件不会变,而其组合经常变化的时候。//声明一个产品类classProduct{constructor(){}}//声明一个建造者类c...

JavaScript设计模式样例四 —— 单例模式

单例模式(SingletonPattern):定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。目的:阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。场景:如一个系统中可以存在多个打印任务,但是同时只能有一个正在工作的任务。例:JS代码实现//惰性单例letlazySingle=((...

JavaScript设计模式 样例三 —— 装饰模式

装饰模式(DecoratorPattern):定义:在不改变原对象的情况下,动态的给对象添加一些额外的职责。就功能而言,装饰模式相比生成子类更为灵活。目的:把类的核心职责和装饰功能区分开。可以去除相关类中重复的逻辑。场景:当系统需要扩展一个类的功能,或者客户端需要动态的给一个对象添加功能,并且使用继承或生成子类会很复杂...

JavaScript设计模式 样例二 —— 策略模式

策略模式(StrategyPattern):定义:定义了一族算法;封装了每个算法;这族的算法可互换代替。目的:将算法的使用与算法的实现分离开来。场景:可用来消除大量的条件分支语句。例:JS代码实现//策略算法封装letstrategy={add(number1,number2){returnnumber1+number...
首页上一页...132133134135136...下一页尾页