例模式:饿汉式,懒汉式+工厂模式
来源:互联网 发布:好听的淘宝会员名女 编辑:程序博客网 时间:2024/05/22 08:00
Java单例模式说出来时,我觉得这东西学过了还不简单!结果,当我自己写时却感觉到有些手生,这应该是平时做的东西少的缘故。。。。
于是从网上查了一下,却也发现网上对这个问题说起来也是乱七八糟的,让我十分迷糊!
自己查了下资料。下面自己总结下吧,说错了希望大家指正!技术就是交流才能进步的!
模式中的单例模式分为:饿汉模式和懒汉模式。
顾名思义:
饿汉模式是对食物(Singleton)比较渴望的,所有一开始就new了一个来满足(食欲)
饿汉式:
public class Singleton{
private static Singleton singleton = new Singleton ();
private Singleton (){}
public static Singleton getInstance(){return singletion;}
}
饿汉式在声明实例变量时不加final关键字,并且非正常使用时可能存在问题
如:Singleton s = Singleton.getInstance();
s.executeMethod();
s = null; // 非正常使用
当另一个人使用时:
Singleton s = Singleton.getInstance();
s.executeMethod(); // throw a NullPointException
懒汉模式是对食物(Singleton)没兴趣或者懒得自己获取食物,直到饿的时候(用到的时候)才获取一个
懒汉式:
public class Singleton{
private static Singleton singleton = null;
public static synchronized Singleton getInstance(){
if(singleton==null){
singleton = new Singleton();
}
return singleton;
}
}
比较:
饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的
推荐使用第一种
懒汉式没有加私有的构造函数
从实现方式来讲他们最大的区别就是懒汉式是延时加载,他在加载类时创建实例,而饿汉式在虚拟机启动的时候就会创建。
---------------------------------------------------------------------------------------------------------------------------------------------------
工厂模式按照《Java与模式》中的提法分为三类: 1. 简单工厂模式(Simple Factory) 2. 工厂方法模式(Factory Method) 3. 抽象工厂模式(Abstract Factory)
单例模式参考:http://topic.csdn.net/u/20071111/14/d9cbf766-765a-4315-a49f-be7888d1308b.html
- 例模式:饿汉式,懒汉式+工厂模式
- 单例模式:饿汉式,懒汉式+工厂模式
- 工厂模式(懒汉式、饿汉式)
- 单例模式 饿汉式 懒汉式
- 【单例模式】饿汉式&懒汉式
- 懒汉式 && 饿汉式 的单例模式
- 单例模式-饿汉式和懒汉式
- 单例设计模式 饿汉式 懒汉式
- 单例设计模式-饿汉式-懒汉式
- 单例模式(懒汉式和饿汉式)
- 【单例模式】饿汉式&懒汉式
- 单例模式(饿汉式&懒汉式)
- 单例模式 饿汉式与懒汉式
- 常用单例模式:饿汉式&懒汉式
- 单例设计模式:饿汉式,懒汉式
- 单例模式 懒汉式 饿汉式
- 单例模式-懒汉式、饿汉式Demo
- 单例模式饿汉式懒汉式
- 开发具备语音识别功能的 Android* 应用
- SQL Server 2008 - How to convert GMT(UTC) datetime to local datetime?
- android中application标签说明
- delphi7中的数组和记录类型
- android中图片的三级cache策略(内存、文件、网络) 一
- 例模式:饿汉式,懒汉式+工厂模式
- eclipse乱码
- MYSQL管理----数据库删除恢复
- python解决ImportError: No module named google.protobuf
- 分享界面
- ORACLE 关于一些日期处理的sql
- splay POJ 3580SuperMemo
- 用Highcharts画曲线图的时间轴问题
- ruby on rails学习第5篇:rake的用法(转载)