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

佳木斯做网站怎么让付费网站免费

佳木斯做网站,怎么让付费网站免费,wordpress只能建博客吗,郑州做网站hnqfu一、单例模式 单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。 单例模式中: 这个类只能有一个实例这个类必须自己创建自己的唯一实例这个类必须…

一、单例模式

  单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。

  单例模式中:

  • 这个类只能有一个实例
  • 这个类必须自己创建自己的唯一实例
  • 这个类必须向外提供访问其唯一实例的方式

二、Java中单例模式的实现方式

  Java中常见的单例模式实现方式有五种:

1.饿汉式(Eager Initialization)

  饿汉式在类加载时就创建单例对象,所以在调用时不需要再创建对象,直接使用即可。这种实现方式比较简单,但在某些情况下可能会造成资源的浪费。

public class SingletonEager {private static final SingletonEager INSTANCE = new SingletonEager();private SingletonEager() {}public static SingletonEager getInstance() {return INSTANCE;}
}
2.懒汉式(Lazy Initialization)

  懒汉式在调用时才创建单例对象,这种实现方式避免了资源浪费,但会有线程安全问题。

public class SingletonLazyUnsafe {private static SingletonLazyUnsafe instance;private SingletonLazyUnsafe() {}public static SingletonLazyUnsafe getInstance() {if (instance == null) {instance = new SingletonLazyUnsafe();}return instance;}
}// 注意:懒汉式在多线程环境下是不安全的

  

3.双重检查锁定(Double-Check Locking)

  双重检查锁定是在懒汉式的基础上加入了双重检查锁机制,可以保证线程安全。

public class SingletonDoubleCheck {private volatile static SingletonDoubleCheck instance;private SingletonDoubleCheck() {}//双重检查和加锁来保证线程安全public static SingletonDoubleCheck getInstance() {if (instance == null) {synchronized (SingletonDoubleCheck.class) {if (instance == null) {instance = new SingletonDoubleCheck();}}}return instance;}
}
4.静态内部类(Static Inner Class)

  静态内部类这个方式是将单例对象作为静态内部类的一个静态变量,这种实现方式既可以保证线程安全,又可以实现懒加载。其实现原理是:外部类加载时,并不会立刻加载内部类,内部类不被加载,就不会去创建实例,只有当getInstance方法被调用时,才会加载内部类去创建实例(而且类加载的过程,在JVM中是被设计成线程安全的),所以既保证线程安全又实现了懒加载。

public class SingletonStaticInner {private SingletonStaticInner() {}private static class SingletonHolder {private static final SingletonStaticInner INSTANCE = new SingletonStaticInner();}public static SingletonStaticInner getInstance() {return SingletonHolder.INSTANCE;}
}

5.枚举(Enumeration)

  枚举是实现单例模式的最佳方式,将单例对象定义为一个枚举类型,这种实现方式可以保证线程安全,同时也可以防止反射、反序列化破坏单例模式。

public enum SingletonEnum {INSTANCE;// 定义方法或属性public void someMethod() {// ...}
}// 使用
SingletonEnum.INSTANCE.someMethod();

注意:除了枚举方式,前面四种方式实现的单例模式都存在反射和反序列化破坏单例的问题

  (在不做额外处理的情况下,通过反射可以突破构造方法的私有化限制,强行创建新的实例。而在反序列化时,可能会生成新的对象实例,而不是保持原有的单例状态。)


http://www.rdtb.cn/news/11729.html

相关文章:

  • 物流企业网站建设方案网络营销策划书的结构
  • 西安网站建设招聘免费建网站的平台
  • 网站及网页设计费用线上销售渠道有哪几种
  • 深圳建设网站百度一下你就知道官网首页
  • 建网站的步骤如何推广好一个产品
  • 引导型网站设计学seo哪个培训好
  • 晋中做网站企业推广软件
  • 最近免费高清观看mv福建seo外包
  • 做网站平台的工作商城全网推广运营公司
  • 个人主页网站制作模板拼多多代运营一般多少钱
  • 南桥网站建设一键搭建网站工具
  • 桂林网站建设培训班seo优化培训学校
  • 专门做旅游攻略的网站有哪些关键词歌词简谱
  • 如何利用ps做网站上海网络推广软件
  • 代理服务器地址怎么填湖南seo优化
  • 企业微营销网站seo手机关键词网址
  • 国际军事最新军事新闻系统优化大师
  • 网站制作费电商运营主要工作内容
  • 手机网站 手机app谷歌在线浏览器免费入口
  • 辽宁购物网站制作系统优化助手
  • 网站建设 用户管理google play下载安装
  • 网站com域名上不去cn能网页制作流程
  • 移动网站开发技术广安seo外包
  • 1688网站怎么做分销全自动推广引流软件免费
  • 做企业网站需要提供什么网络推广营销策划方案
  • 东莞市建设规划局网站首页google adwords
  • 网站开发一级分销产品关键词大全
  • 南昌网站建设资讯南昌百度推广联系方式
  • 开网站开发公司谷歌搜索引擎免费入口 香港
  • 宿州做网站公司重庆今日头条新闻消息