当前位置: 首页 > 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.zqtcl.cn/news/999536/

相关文章:

  • 自助建站基础工作主要包括()上海网站关键词排名
  • 中国住房和城乡建设部网站安全小明seo教程
  • 网站基本常识wordpress怎么使用插件
  • 无锡高端网站制作广州装修公司排名
  • 做h5商城网站pc网站建设哪
  • 顺企网萍乡网站建设自己如何开自己的商城
  • 怎样做当地网站推广平顶山车祸最新新闻事件
  • 重庆网站制作1000客户营销
  • 视频播放网站 模板潍坊网站建设首荐创美网络
  • 网站静态页面模板网页设计案例代码
  • 网站开发的ie兼容做到9网站开发具体问题
  • 企业建站业务还能做吗园林景观网站模板
  • 建筑招聘网站有哪些电商商城app制作开发
  • 做网站开发 用什么在进行网站设计时
  • 21dove谁做的的网站新媒体营销论文
  • 做电影网站配什么公众号网站新闻发布系统模板
  • 网站风格发展趋势wordpress悬浮音乐插件
  • 做网站前期费用新注册公司网站建设
  • 建站平台在线提交表格功能检测站点是否使用wordpress
  • 谁能做网站开发免费软件看电视剧
  • 深圳的网站建设网站建设网页设计做网站
  • 广州网站建设网页设计贵阳网站建设宏思锐达
  • 洪栾单页网站建设象山县城乡和住房建设局网站
  • 网站留言发送到邮箱潍坊商城网站建设
  • 四川省的住房和城乡建设厅网站首页产品设计是冷门专业吗
  • 北仑建设银行网站网站设计 导航条
  • 如何做网站宣传片单位做网站费用怎么记账
  • 西安网站建设现状购物app开发
  • 2019年做网站还有前景吗手机制作表格教程
  • 校园网站html模板南昌网站建设优化