摘要:
桥接模式(Bridge Pattern) 定义:是用于把抽象化与实现化解耦,使得二者可以独立变化。 目的:将抽象部分与实现部分分离,使它们都可以独立的变化。 场景:实现系统可能有多个角度分类,每一种角度都可能变化。 let each = (arr, fn) => { for (let i = 0; 阅读全文
摘要:
适配器模式(Adapter Pattern) 定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。目的:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。场景:系统需要使用现有的类,而此类的接口 阅读全文
摘要:
原型模式(Prototype Pattern) 定义:用于创建重复的对象,同时又能保证性能。目的:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。场景:在运行期建立和删除原型。 let productPrototype = { init: (type) => { this.type 阅读全文
摘要:
抽象工厂模式(Abstract Factory Pattern) 定义:抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。或者说,是其他工厂的工厂。目的:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。场景:系统的产品有多于一个的产品族,而系统只消费其中某一 阅读全文
摘要:
建造者模式(Builder Pattern) 定义:使用多个简单的对象一步一步构建成一个复杂的对象。 目的:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 场景:一些基本部件不会变,而其组合经常变化的时候。 // 声明一个产品类 class Product { constru 阅读全文
摘要:
/** * 比较两个时间的时间差 * @param startTime 开始时间 * @param endTime 结束时间 * @demo compareTime(new Date('2019-12-24 16:02').getTime(), new Date().getTime()) */ function compareTime (startTime, endTime) { var retV 阅读全文
摘要:
/** * 监听浏览器标签页的显示与隐藏 */ class ListenerPageVisibility { constructor () { // 设置隐藏属性和改变可见属性的事件的名称 this.hidden = '' this.visibilityChange = '' if (typeof document.hi... 阅读全文
摘要:
单例模式(Singleton Pattern): 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 目的:阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。 场景:如一个系统中可以存在多个打印任务,但是同时只能有一个正在工作的任务。 例:JS代码实现 // 惰性单 阅读全文
摘要:
装饰模式(Decorator Pattern): 定义:在不改变原对象的情况下,动态的给对象添加一些额外的职责。就功能而言,装饰模式相比生成子类更为灵活。 目的:把类的核心职责和装饰功能区分开。可以去除相关类中重复的逻辑。 场景:当系统需要扩展一个类的功能,或者客户端需要动态的给一个对象添加功能,并 阅读全文
摘要:
// 滚动条位置 var scrollPosition = { // 位置 result: 0, // 监听位置 rememberPosition: function () { var type = 'scroll' var handle = function () { var scrollTop = win... 阅读全文