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

宁波论坛建站模板网站建设费用细项

宁波论坛建站模板,网站建设费用细项,微信公众号的网站开发,网站百度推广怎么做netflix 模式创新单例设计模式是一种软件设计模式#xff0c;用于将类的实例化限制为一个对象。 与其他创建设计模式#xff08;例如抽象工厂 #xff0c; 工厂和构建器模式#xff09;相比#xff0c;单例将创建一个对象#xff0c;但也将负责#xff0c;因此该对象只… netflix 模式创新 单例设计模式是一种软件设计模式用于将类的实例化限制为一个对象。 与其他创建设计模式例如抽象工厂 工厂和构建器模式相比单例将创建一个对象但也将负责因此该对象只有一个实例存在。 当创建一个类作为单例时必须解决某些问题。 如何确保一个类只有一个实例。 如何轻松访问类的唯一实例 类如何控制其实例化 如何限制一个类的实例数 假设我们有一个发送消息的类。 Messenger类。 package com.gkatzioura.design.creational.singleton;public class Messenger {public void send(String message) {} } 但是我们希望消息过程仅由Messenger类的一个实例处理。 想象一下Messenger类打开一个tcp连接例如xmpp并且必须保持连接活跃才能发送消息的情况。 每次我们必须发送一条消息时打开一个新的xmpp连接都是非常低效的。 因此我们将继续使Messenger类成为单例。 package com.gkatzioura.design.creational.singleton;public class Messenger {private static Messenger messenger new Messenger();private Messenger() {}public static Messenger getInstance() {return messenger;}public void send(String message) {} } 如您所见我们将Messenger构造函数设置为私有并使用静态变量初始化了Messenger。 静态变量是类级别的变量仅当将类加载到内存中时内存分配才发生一次。 这样我们确保将使Messenger类仅实例化一次。 一旦被调用getInstance方法将获取静态Messenger实例。 显然以前的方法有其优点和缺点。 我们不必担心线程安全仅在加载Messenger类时才创建实例。 但是它缺乏灵活性。 考虑将配置变量传递给Messenger构造器的场景。 使用以前的方法是不可能的。 一种解决方法是在getInstance方法上实例化Messenger类。 package com.gkatzioura.design.creational.singleton.lait;public class Messenger {private static Messenger messenger;private Messenger() {}public static Messenger getInstance() {if(messengernull) {messenger new Messenger();}return messenger;}public void send(String message) {} } 上面的方法在某些情况下可能有效但是在类可能在多线程环境中实例化的情况下它会丢失线程安全性。 使我们的类线程安全的最简单方法是同步getInstance方法。 package com.gkatzioura.design.creational.singleton.lait;public class Messenger {private static Messenger messenger;private Messenger() {}public synchronized static Messenger getInstance() {if(messengernull) {messenger new Messenger();}return messenger;}public void send(String message) {} } 那将工作。 至少将使Messenger的创建同步并且不会创建任何重复项。 这种方法的问题在于在创建对象时仅需要同步一次。 使用上面的代码将导致不必要的开销。 另一种方法是使用双重检查锁定方法。 现在经过双重检查的锁定需要格外小心因为很容易从正确的选择中找出损坏的实现 。 最好的方法是使用volatile关键字实现延迟加载。 package com.gkatzioura.design.creational.singleton.dcl;public class Messenger {private static final Object lock new Object();private static volatile Messenger messenger;private Messenger() {}public static Messenger getInstance() {if(messengernull) {synchronized (lock) {if(messengernull) {messenger new Messenger();}}}return messenger;}public void send(String message) {} } 通过使用volatile关键字我们可以防止对volatile的写入相对于任何先前的读取或写入进行重新排序并防止对volatile的读取相对于随后的任何读取或写入进行重新排序。 互斥对象也用于实现同步。 总而言之我们创建了一个对象并且还确保了该对象只有一个实例。 我们还确保在多线程环境中实例化对象不会有任何问题。 您可以在github上找到源代码。 在下一篇博客文章中我们将介绍原型模式。 另外我还编写了备忘单其中包含“创作设计模式”的摘要。 在链接中注册以接收它。 翻译自: https://www.javacodegeeks.com/2018/03/creational-design-patterns-singleton-pattern.htmlnetflix 模式创新
http://www.pierceye.com/news/837985/

相关文章:

  • interidea 做网站网站域名备案 更改
  • 哈尔滨公司做网站动画设计的大学排名
  • 网站建设与网页制作试卷网站搜索引擎优化推广
  • 网站子目录设计网站开发数据库技术
  • 可以做音基题的音乐网站上海网站设计公司有哪些
  • 昆明做网站公司做家居的网站
  • 网站建设首选易网宣软文代发
  • 手机版网站开发用什么语言自己建设的网站怎么赚钱
  • 宁波建设监理协会网站软件开发文档的作用
  • 兰州电商平台网站建设网路神做网站怎么样
  • 诸城易讯网站建设服务中心网址的域名
  • 制作商务网站应用公园制作app软件下载
  • 情头定制网站被称为网站开发神器
  • 宝安网站设计案例淘宝页面制作
  • 天津品牌网站制作怎样建设网站流程
  • 怎样进行公司网站建设wordpress主题公司
  • 外宣做网站宣传网站功能描述
  • 部队网站建设多少钱营销自己的网站
  • 长春市城乡建设部网站南昌诚推网络技术有限公司
  • 网站 建设 欢迎你濮阳家电网站建设
  • 怎么快速建立一个网站如何用腾讯云服务器搭建wordpress
  • 五屏网站建设多少钱深圳网站公司有哪些
  • 莆田网站建站wordpress cd
  • 软件下载安装免费南京seo关键词优化服务
  • 广州网站设计软件建设将网站加入受信网站再试
  • 淘宝联盟网站备案常见的互联网应用
  • 自己做网站 搜索功能开发企业综合信息服务平台
  • 意大利语网站建设wordpress主题首页显示不全
  • 模板网站免费下载wordpress启用静态
  • 保定网站建设哪家好网站建设实践报告3000字