android单个对象_单例子模式
来源:互联网 发布:qq空间绑定独立域名 编辑:程序博客网 时间:2024/06/05 22:48
单例模式
一、单例模式:
是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义。
单例模式有很多种 ,主要分为两种::懒汉式单例、饿汉式单例、
例:饿汉模式
public class Singleton {
//私有的创建一个对象
private static Singleton singleton=new Singleton();
//私有构造器
private Singleton() {
}
//返回Singleton对象方法
public static Singleton getSingleton(){
return singleton;
}
//打印输出
public void print(){
System.out.println("对象"+this);
}
}
//私有的创建一个对象
private static Singleton singleton=new Singleton();
//私有构造器
private Singleton() {
}
//返回Singleton对象方法
public static Singleton getSingleton(){
return singleton;
}
//打印输出
public void print(){
System.out.println("对象"+this);
}
}
这种方式基于classloder机制避免了多线程的同步问题,不过,instance在类装载时就实例化,虽然导致类装载的原因有很多种,在单例模式 中大多数都是调用getInstance方法, 但是也不能确定有其他的方式(或者其他的静态方法)导致类装载,这时候初始化instance显然没有达 到 lazy loading的效果。
例:懒汉模式(1)
//创建自己本身对象
private static Singleton1 singleton1=null;
//私有化构造器
private Singleton1(){
}
//获得一个Singleton1对象
public Singleton1 geiInttance(){
if(singleton1==null)
{
singleton1=new Singleton1();
}
return singleton1;
}
private static Singleton1 singleton1=null;
//私有化构造器
private Singleton1(){
}
//获得一个Singleton1对象
public Singleton1 geiInttance(){
if(singleton1==null)
{
singleton1=new Singleton1();
}
return singleton1;
}
注意:这种致命的是在多线程不能正常工作。
例:懒汉模式(2)
//创建自己本身对象
private static Singleton1 singleton1=null;
//私有化构造器
private Singleton1(){
}
//获得一个Singleton1对象加锁
public synchronized Singleton1 geiInttance(){
if(singleton1==null)
{
singleton1=new Singleton1();
}
return singleton1;
}
private static Singleton1 singleton1=null;
//私有化构造器
private Singleton1(){
}
//获得一个Singleton1对象加锁
public synchronized Singleton1 geiInttance(){
if(singleton1==null)
{
singleton1=new Singleton1();
}
return singleton1;
}
这种写法能够在多线程中很好的工作,而且看起来它也具备很好的lazy loading,但是,遗憾的是,效率很低,99%情况下不需要同步。
阅读全文
0 0
- android单个对象_单例子模式
- [设计模式]SINGLETON(单件)_对象创建型模式
- android开发_性能优化_单例模式
- js面向对象编程,单例模式的一个例子
- 【转】.NET设计模式_单件模式:各种类型单体模式及例子
- 单例模式例子
- 单例模式例子
- 单例模式例子
- 敏捷软件开发_面向对象设计模式(创建型模式)单件(Singleton)模式
- 黑马程序员_面向对象1_(封装、构造函数、this、static、单例设计模式)
- JAVASE_06天_@面向对象_构造和静态和单例设计模式
- 学习笔记之设计模式:单例模式_获得对象并保持唯一
- 概念_对象_模式
- 单例模式的例子
- 单例模式的例子
- java单例模式例子
- 单例模式c++例子
- 单例模式的例子
- scikit-learn 中文文档-决策树-监督学习|ApacheCN
- Red Hat 6.x 搭建 Gitlab10.1.14 (1)
- Unity Shader 学习笔记(22) Bloom效果
- 上传文件代码块
- wordpress 新建页面制作方法
- android单个对象_单例子模式
- caffe源码阅读之layer(2)——Euclidean_loss_layer层
- 消息队列(MQ)简介与应用场景
- 自己创建一个android studio在线依赖compile
- [基础常识]迁移ECS云服务器
- javascript中原型对象和实例对象及ECMA5新方法
- 远程访问oracle数据库
- html复习小结
- TensorFlow实现基于深度学习的图像补全