博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式-单例模式
阅读量:6003 次
发布时间:2019-06-20

本文共 2030 字,大约阅读时间需要 6 分钟。

设计模式-Design Pattern

  一套反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结
目的:可重用代码、代码易懂、可靠性高

GitHub地址:

 

单例模式

  有些对象我们只需要一个
  配置文件、工具类、线程池、缓存、日志对象等

  本文介绍单例模式的两种模式:饿汉模式和懒汉模式

饿汉模式
  私有静态直接实例化,加载时创建,获取较快

1 /** 2  * 单例模式Singleton  3  * 场景:全局只有一个实例  4  * 作用:保证全局只有一个实例  5  * 类型:饿汉模式、懒汉模式 6  *  7  * 饿汉模式 8  * @author coffee 9  */10 public class Singleton {11 12     // 构造方法私有化,保证单例13     private Singleton() {14 15     }16 17     // 自己创建一个实例,私有静态18     private static Singleton instance = new Singleton();19 20     // 提供一个用于获取实例的方法,公有静态21     public static Singleton getInstanse() {22         return instance;23     }24 25     public LocalDate getDate() throws Exception {26         return LocalDate.now();27     }28 }

 

测试

1     @Test 2     public void test() { 3         try { 4             LocalDate date = Singleton.getInstanse().getDate(); 5             Assert.assertEquals(date, LocalDate.now()); 6         } catch (Exception e) { 7             // TODO Auto-generated catch block 8             e.printStackTrace(); 9         }10     }

 

懒汉模式

  实例化交给getIntance()方法,获取时创建,较慢

1 /** 2  * 懒汉模式 3  * @author coffee 4  */ 5 public class Singleton2 { 6      7     //构造方法私有化,保证单例 8     private Singleton2(){ 9         10     }11     12     //自己创建一个实例,私有静态13     private static Singleton2 instance;14     15     //提供一个用于获取实例的方法,公有静态16     public static Singleton2 getInstanse(){17         synchronized (Singleton2.class) {18             if(instance == null){19                 instance = new Singleton2();20             }21         }22         return instance;23     }24     25     public LocalDate getDate() throws Exception {26         return LocalDate.now();27     }28 }

测试

1     @Test 2     public void test() { 3         try { 4             LocalDate date = Singleton2.getInstanse().getDate(); 5             Assert.assertEquals(date, LocalDate.now()); 6         } catch (Exception e) { 7             // TODO Auto-generated catch block 8             e.printStackTrace(); 9         }10     }

 

如有理解不当或建议,欢迎指正

转载于:https://www.cnblogs.com/xiaojieblog/p/8711271.html

你可能感兴趣的文章
今天一定要纪念一下
查看>>
windows系统很受欢迎,linux系统很安全,为什么少有人使用linux
查看>>
站立会议(1)
查看>>
Windbg学习 (0x0011) 命令-远程调试
查看>>
⒁bootstrap组件 工具提示框 弹出框 警告框 基础案例
查看>>
Unity用代码实现Remove Missing Script
查看>>
我为什么不自建博客 谈谈自建博客的好处与坏处
查看>>
leetcode 282. 给表达式添加运算符
查看>>
作业1 对这门课的希望和自己的目标
查看>>
jmeter性能测试小小的实战
查看>>
WCF、.Net Remoting、Web Service概念及区别
查看>>
fiddler限制网速
查看>>
CloudSetuper
查看>>
Search in Rotated Sorted Array
查看>>
强大的HTTP包装开源项目ASIHTTPRequest介绍
查看>>
.NET Core 2.0 Preview2 发布汇总
查看>>
根据IP查找计算机名
查看>>
C++_类继承6-继承和动态内存分配
查看>>
数据库优化经验总结
查看>>
Qt 使用 boost
查看>>