设为首页 加入收藏

TOP

Java设计模式心得笔记
2017-02-15 08:15:26 】 浏览:293
Tags:Java 设计模式 心得 笔记

最近一直在看《Head First设计模式》,这本书写的确实是很不错的,专注于怎么用最简单的方式最通俗的语言让人了解设计模式。据说GoF的设计模式那本书写的很好,是一本经典,但是就是难懂,这本书应该就是我们这些一看经典书就困的人的宝贝了。


不过Head First系列并不专注于写代码,我就把自己学习的时候写出来的代码贴在这里当做笔记吧,也方便搜到的人参考。


单例模式是我遇到的最多的模式了,这种模式大部分被利用在数据库编程中,因为涉及到资源分配等原因,单例模式是一种非常好的模式。


下面是一段我实现的单例模式代码,也是我们现在工程里在用的,我就不打算写什么懒汉式啊,饿汉式啊的了。


package pattern;


public class Singleton {
? ? private volatile static Singleton instance = null;
? ? private Singleton() {
? ? ? ?
? ? }
? ?
? ? public static Singleton getInstance() {
? ? ? ? if (instance == null) {
? ? ? ? ? ? synchronized(Singleton.class) {
? ? ? ? ? ? ? ? if (instance == null) {
? ? ? ? ? ? ? ? ? ? instance = new Singleton();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return instance;
? ? }
}


? ? 下面的代码是它的测试代码:


package pattern;


public class SingletonTest {
? ? public static void main(String[] args) {
? ? ? ? Singleton instance = Singleton.getInstance();
? ? ? ? String str = instance.toString();
? ? ? ? System.out.println(str);
? ? }
}


? ? 其实以前我很不理解单例模式为什么叫做单例,为什么这个类只会有一个实例存在。如果我在测试代码里声明两个变量如何呢?


? ? 结果后来我debug了一次代码,我才知道了什么叫做只有一个实例。那么测试代码改一下:


package pattern;


public class SingletonTest {
? ? public static void main(String[] args) {
? ? ? ? Singleton instance = Singleton.getInstance();
? ? ? ? Singleton instance1 = Singleton.getInstance();
? ? ? ? String str = instance.toString();
? ? ? ? String str1 = instance1.toString();
? ? ? ? System.out.println(str);
? ? ? ? System.out.println(str1);
? ? }
}


? ? 打印出来的结果是一样的。


? ? debug的时候我发现这一句(Singleton instance1 = Singleton.getInstance();)的执行会在if (instance == null)这里返回false,因此是不会重新new一个对象的,因此instance和instance1引用的其实是一个对象,这就是单例模式了。


? ? 现在发现学习写代码还是一定要debug的,跟一遍代码逻辑,理解更深。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇利用Python脚本获取Windows和Linu.. 下一篇C++ 继承类强制转换时的虚函数表..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目