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

php做网站参考文献行政单位建设网站方案

php做网站参考文献,行政单位建设网站方案,建设工程和工程建设,网站建设知识及维护技巧单例模式 一、单例模式的定义 ​ 单例模式#xff08;Singleton Pattern#xff09;是一种常见的软件设计模式#xff0c;确保一个类只有一个实例存在#xff0c;并提供一个全局访问点来获取该实例。 二、单例模式的实现方式 ​ 1.懒汉式单例 public class LazySingle…单例模式 一、单例模式的定义 ​ 单例模式Singleton Pattern是一种常见的软件设计模式确保一个类只有一个实例存在并提供一个全局访问点来获取该实例。 二、单例模式的实现方式 ​ 1.懒汉式单例 public class LazySingleton {private static LazySingleton instance; // 静态变量存储唯一实例private LazySingleton() { // 私有构造函数防止外部创建实例System.out.println(懒汉式单例构造函数被调用);}public static LazySingleton getInstance() { // 获取实例的静态方法if (instance null) { // 如果实例尚未创建instance new LazySingleton(); // 创建实例System.out.println(懒汉式单例实例首次创建);}return instance; // 返回实例} }​ 在懒汉式中只有在第一次调用 getInstance 方法时才创建实例。 ​ 2.饿汉式单例 public class EagerSingleton {private static final EagerSingleton instance new EagerSingleton(); // 直接创建并初始化唯一实例private EagerSingleton() { // 私有构造函数System.out.println(饿汉式单例构造函数被调用);}public static EagerSingleton getInstance() { // 获取实例的静态方法System.out.println(饿汉式单例实例获取);return instance; } }​ 饿汉式在类加载时就创建了实例。 ​ 3.双重检验锁Double Check LockDCL private volatile static Singleton singleton; // 使用volatile修饰保证线程可见性 private Singleton (){} // 私有构造函数防止外部直接实例化/*** 获取单例实例的方法* return 单例对象*/ public static Singleton getInstance() {if (singleton null) { // 第一次检查避免不必要的同步synchronized (Singleton.class) { // 同步锁保证线程安全if (singleton null) { // 第二次检查确保在同步块内只创建一次实例singleton new Singleton(); // 创建单例实例}}}return singleton; // 返回单例实例 }​ DCL 模式的突出特点在于它成功地在确保线程安全的基础上于多线程环境中依然能够维持出色的性能表现。通过巧妙地进行两次 singleton 是否为 null 的判断有效地规避了不必要的同步操作所带来的性能损耗。 ​ 4.静态内部类 private static class SingletonHolder { // 静态内部类private static final Singleton INSTANCE new Singleton(); // 在内部类中创建单例实例 } private Singleton (){} // 私有构造函数防止外部直接实例化/*** 获取单例实例的方法* return 单例对象*/ public static final Singleton getInstance() {return SingletonHolder.INSTANCE; // 直接返回静态内部类中的单例实例 }​ 它专门适用于静态域的场景。巧妙地借助了 Java 的类加载机制仅在实际需要获取实例时才对静态内部类进行加载从而顺利实现了延迟初始化的效果同时也切实保障了线程的安全性。 ​ 5.枚举 public enum Singleton { // 定义枚举类型的单例INSTANCE; // 唯一的枚举值即单例实例 }​ 它能够自动支持序列化机制并且从根本上杜绝了多次实例化的可能性是一种简洁、高效且极为可靠的单例实现手段。 三、破坏单例的情况及解决方法 反射破坏单例 问题通过反射可以绕过私有构造函数的限制创建新的实例。解决在构造函数中进行判断如果已经存在实例抛出异常。 /*** 四、破坏单例的情况及解决方法*//*** 反射破坏单例的解决示例* 问题通过反射可以绕过私有构造函数的限制创建新的实例。* 解决在构造函数中进行判断如果已经存在实例抛出异常。*/ public class SafeSingleton {private static SafeSingleton instance; // 静态变量存储唯一实例/*** 私有构造函数* 在构造函数中检查是否已有实例存在若有则抛出运行时异常*/private SafeSingleton() {if (instance! null) {throw new RuntimeException(单例模式禁止通过反射创建多个实例);}}/*** 获取单例实例的方法* 如果实例不存在则创建存在则直接返回* return 单例对象*/public static SafeSingleton getInstance() {if (instance null) {instance new SafeSingleton();}return instance;} }/*** 序列化和反序列化破坏单例的解决示例* 问题序列化后再反序列化可能创建新的实例。* 解决实现 readResolve 方法返回已有的实例。*/ public class SerializableSingleton implements Serializable {private static final SerializableSingleton instance new SerializableSingleton(); // 初始化唯一实例/*** 私有构造函数*/private SerializableSingleton() {}/*** 获取单例实例的方法* return 单例对象*/public static SerializableSingleton getInstance() {return instance;}/*** 在反序列化时调用返回已有的实例* return 已有的单例实例*/private Object readResolve() {return instance;} }/*** 克隆破坏单例的解决示例* 问题若单例类实现了 Cloneable 接口通过克隆可能创建新实例。* 解决在 clone 方法中抛出异常或返回已有实例。*/ public class CloneableSingleton implements Cloneable {private static CloneableSingleton instance new CloneableSingleton(); // 存储唯一实例/*** 私有构造函数*/private CloneableSingleton() {}/*** 获取单例实例的方法* return 单例对象*/public static CloneableSingleton getInstance() {return instance;}/*** 重写 clone 方法抛出不支持克隆的异常* return 抛出异常禁止克隆* throws CloneNotSupportedException 不支持克隆异常*/Overrideprotected Object clone() throws CloneNotSupportedException {throw new CloneNotSupportedException(单例模式禁止克隆);} }四、总结 适用场景 单例模式适用于在任何情况下都绝对只需要一个实例的情况例如 ServletContext、ServletConfig、ApplicationContext、DBPool、ThreadPool 等。 优点 在内存中仅存在一个实例显著降低了内存开销。能够有效避免对资源的多重占用保证资源的合理分配和使用。设定了全局访问点从而实现了对访问的严格管控。 缺点 没有提供接口导致扩展较为困难。若要对单例对象进行扩展只能通过修改代码来实现缺乏其他灵活的途径。 总的来说单例模式在特定场景下能够发挥其优势有效地管理资源和控制访问但在扩展性方面存在一定的局限性。在实际应用中需要根据具体需求权衡其利弊选择是否使用单例模式。
http://www.w-s-a.com/news/551231/

相关文章:

  • 食品建设网站前的市场分析进出口网站贸易平台有哪些
  • php商城网站建设个人网站用什么服务器
  • 如何做好品牌网站建设方案网站开发的学习
  • 网站开发 管理方案wordpress怎么搭建微博
  • 有哪些ui的设计网站网上商城网站建设设计方案
  • iis中怎样配置网站绑定运城可以做网站的公司
  • 品牌网站建设开发价格dedecms电影网站模板
  • 网站设计外包合同帝国网站后台认证码错误
  • 网站设计公司深圳怎么免费做公司网站
  • 90设计网站几次是什么意思swipe类网站
  • 安康微网站建设网站域名使用费用
  • 网站建设执招标评分表微信代理网站模板
  • ps做网站分辨率自适应地方网站盈利
  • 免费自助小型网站专业网站建设组织
  • 猎聘网网站建设目标查看别人wordpress主题
  • 免费建设网站入驻网站备案不能更新吗
  • 个人网站制作代码西安建筑类公司
  • 网站备案要营业执照吗网站建设如何记账
  • 新手学做网站难吗外包服务商
  • 公司网站建设的项目工作分解结构wordpress插件后端页面
  • 四川省建设人才网站2018南京专业建站
  • ppt制作网站推荐seo教程百度网盘
  • 网站建设多少钱一平米网上商城网站开发报告
  • 福州网站建设招聘信息哈尔滨中企动力科技股份有限公司
  • 军事新闻最新seo关键词查询排名软件
  • 免费网站建设官网项目建设表态发言
  • 平谷建站推广广告投放平台主要有哪些
  • 网站备案掉了什么原因步骤怎么读
  • 徐州市建设监理协会网站做一个公司官网需要多少钱
  • 网站开发学什么数据库做公司网站注意事项