当前位置: 首页 > news >正文

连云港公司做网站做百科网站

连云港公司做网站,做百科网站,谈谈百度和谷歌seo优化的区别,wordpress 8小时前文章目录 单例模式实现代理单例惰性单例 上一章后续的内容是关于 JS 函数闭包的,考虑很多读者已经有了闭包基础或者希望通过实战理解,遂跳过上一章直接开始设计模式篇~ 需要注意的是,代码部分仅供参考,主要关注的内容是…

文章目录

    • 单例模式
    • 实现
    • 代理单例
    • 惰性单例

上一章后续的内容是关于 JS 函数闭包的,考虑很多读者已经有了闭包基础或者希望通过实战理解,遂跳过上一章直接开始设计模式篇~

需要注意的是,代码部分仅供参考,主要关注的内容是设计模式的思想和运用,结合到自己的实战中才是最好的

单例模式

单例模式的定义是:保证一个类只有一个实例,并提供一个访问他的全局访问点

例如:线程池,全局缓存,登陆窗口(无论你点击多少次,窗口都只会创建一个)

实现

实现起来并不复杂,只需要创建一个变量来标识是否已经为某个类创建过对象,如果已经创建了,那就直接返回之前创建的对象~

const Singleton = {instance: null,getInstance: function () {if (!this.instance) {this.instance = {// 在这里定义单例的属性和方法name: "Singleton Instance",sayHello: function () {console.log("Hello from Singleton!");},};}return this.instance;},
};// 使用示例
const instance1 = Singleton.getInstance();
console.log(instance1.name); // 输出: Singleton Instance
instance1.sayHello(); // 输出: Hello from Singleton!const instance2 = Singleton.getInstance();
console.log(instance2.name); // 输出: Singleton Instanceconsole.log(instance1 === instance2); // 输出: true

方便结合理解,我们加入一个静态型面向对象的语言 C# 来看:

public class Singleton
{private static Singleton instance;// 私有构造函数,防止外部实例化private Singleton(){}public static Singleton Instance{get{if (instance == null){instance = new Singleton();}return instance;}}// 在这里定义单例的其他属性和方法public string Name { get; set; }public void SayHello(){Console.WriteLine("Hello from Singleton!");}
}

代理单例

上面的代码有一个问题,你会发现 JS 部分中,一部分代码用来保证单例不重复创建,另一部分代码用来创建单例对象,显然这不是一个好的做法,如果某一天我们要改写这个单例代码,无疑会使代码变得复杂,所以引入 代理 单例模式

通过这样就使得 Singleton 成为了一个普通的类,和 Proxy 组成了单例模式!

var Singleton = function () {this.name = "Singleton Instance";
};Singleton.prototype.sayHello = function () {console.log("Hello from Singleton!");
};const SingletonProxy = (function () {var instance;return function () {if (!instance) {instance = new Singleton();}return instance;};
})();// 使用示例
var proxyInstance1 = new SingletonProxy();
var proxyInstance2 = new SingletonProxy();console.log(proxyInstance1.name);
console.log(proxyInstance2.name);

同样还有 C# 版的:

private class Singleton
{private Singleton(){// 构造函数}
}public class SingletonProxy
{private Singleton proxyInstance;public Singleton GetInstance(){if (proxyInstance == null){proxyInstance = Singleton.Instance;}return proxyInstance;}
}

惰性单例

上面的代码已经实现了惰性单例模式:只有调用的时候才实现对象的初始化,即这一段:

public Singleton GetInstance()
{if (proxyInstance == null){proxyInstance = Singleton.Instance;}return proxyInstance;
}

这样使得资源和配置更灵活,且线程安全~

http://www.yayakq.cn/news/411626/

相关文章:

  • iis7.5 部署网站网站建设推广公司
  • 怎么管理好自己的网站腾讯云域名交易平台
  • 网站的网站制作公司网站页面设计优化方案
  • 自动的东莞网站制作公司dw 做的网站能用吗
  • whois查询 站长工具成都市建网站公司
  • 零基础网站开发要学多久wordpress主题自定义添加后台设置
  • 晋中市建设局网站wordpress下载站
  • 企业网站案例公司商城型网站怎么做优化
  • 网站外链分析怎么做动漫制作专业就业前景文字
  • 南宁网站建设公司哪家专业qq做我女朋友好吗网站
  • 女生做seo网站推广电商商城平台定制
  • 哪里有整站优化高端娱乐网站建设
  • 廊坊市安次区建设局网站logo设计图片免费 图案
  • 打造公司的网站免费素材下载网站有哪些
  • 做外贸网站需要什么烟台做网站工资
  • 网站 报价方案涂鸦app定制开发
  • 阿里云虚拟主机做淘客网站松江企业做网站
  • 房产网站建设的目的适合做手机主页的网站
  • 网络公司 建站 官方网站网站报价怎么做
  • 网站 沙盒成都58手机微信网站建设名录
  • 让客户留住更长时间访问你的网站企业网站流程
  • 长沙网站托管离婚协议书模板免费下载
  • 合同备案号查询系统广东seo推广公司
  • 西乡专业网站建设网站vr视角怎么做
  • 邢台做网站公司排名网站搭建收费参考
  • 手机网站开发之列表开发华为网上商城手机官网
  • 固镇做网站多少钱广元做网站
  • 宁波建站公司哪家服务好上海建设协会网站
  • 虚拟机 网站建设网站外链建设培训
  • 做家装的网站摄影作品网站建设方案书