`

1.单例模式Singleton

 
阅读更多

单例模式:Ensure a class has only one instance,and provides a global point of access it。也就是说,如果将一个类设计成单例模式,那么它将只允许一个实例。下面可以看一下单例模式的通用代码:

 

package net.jerryblog.dp.sigleto;

public class Singleton {
	private static final Singleton instance = new Singleton();
	private Singleton(){
		
	}
	public static Singleton getInstance() {
		return instance;
	}
}

上面的情况下,一旦加载类,就会初始化instance,如果需要在用到instance的时候再实例化呢,可以采用懒汉式单例模式:

package net.jerryblog.dp.sigleto;

public class SingletonLazy {
	private static SingletonLazy instance = null;
	
	private SingletonLazy() {
		
	}
	
	public static synchronized SingletonLazy getInstance() {
		if(instance == null) {
			instance = new SingletonLazy();
		}
		return instance;
	}
	
}

 

 

单例模式还有一种扩展形式:有上限的多例模式。看代码:(这个例子是《设计模式之禅》里面的。)

package net.jerryblog.dp.sigleto;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Emperor {
	
	private static List<String> nameList = new ArrayList<String>();
	private static List<Emperor> empList = new ArrayList<Emperor>(); 
	private static int curEmpNum = 0;
	private static int maxEmpNum = 3;
	
	private Emperor() {
		
	}
	
	private Emperor(String name) {
		nameList.add(name);
	}
	
	static {
		for(int i = 0; i < maxEmpNum; i++) {
			empList.add(new Emperor("皇帝:" + (i+1)));
		}
	}
	
	public static Emperor getInstance() {
		Random random = new Random();
		int index = random.nextInt(maxEmpNum);
		return empList.get(index);
	}
}

 

分享到:
评论

相关推荐

    2.单例模式(Singleton)1

    单例模式是一种设计模式,它的核心思想是在整个应用程序中,保证一个类只有一个实例存在,并提供一个全局访问点。这样做的好处在于控制共享资源,优化性能,避免并发问题,以及简化对象间的交互。 **定义** 单例...

    单例模式 Singleton Pattern

    synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } } ``` 4. **静态内部类**:利用Java类加载机制保证初始化实例时只有一个线程,既高效...

    Qt qml Singleton 单例模式

    在Qt的Qml环境中,单例模式是一种设计模式,它允许在整个应用程序中创建一个全局访问点,确保某个类只有一个实例存在。这样的设计模式在需要共享数据或者服务时非常有用,避免了多处创建相同对象导致的数据不一致或...

    Java 单例模式Singleton

    简单的单例模式举例Singleton 分为恶汉式 懒汉式

    关于单例模式的知识要点

    synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } } ``` 4. **静态内部类**:利用Java类加载机制保证线程安全,同时实现了延迟初始化。 ...

    单例模式(Singleton)的6种实现

    单例模式(Singleton)是设计模式中最简单也是最有争议的一个模式。它主要解决的问题是确保一个类仅有一个实例,并提供一个全局访问点。单例模式适用于那些需要全局访问的场景,比如线程池、缓存、配置对象等。单例...

    单例模式Singleton(java源码)

    单例模式的特点有三: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。 Singleton模式包含的角色只有一个,就是Singleton。Singleton拥有一个私有构造函数,...

    单例模式(singleton)

    synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } } ``` 4. 静态内部类:利用类加载机制保证线程安全,同时延迟初始化。 ```java public ...

    xfhy#Android-Notes#7.单例模式的双重检查锁为什么必须加volatile1

    这种写法可以保证线程安全.两个if都是不能去掉的.如果去掉第一个if: 那么所有的线程都会到这里来先获取锁,然后判断singleton是否为空.所有线程都会串行

    设计模式C++学习之单例模式(Singleton)

    单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C++中,实现单例模式有多种方法,我们将会深入探讨这一模式的原理、优缺点以及如何在实际编程中应用。 单例模式的核心在于...

    单例 模式 singleton

    单例模式是一种设计模式,用于确保一个类在整个应用程序中只存在一个实例。这种模式在Java中广泛应用于需要全局访问点或资源管理的场景,比如配置管理、数据库连接池等。下面将详细阐述单例模式的实现方式、优化策略...

    单例模式详解

    单例模式详解 单例模式是 Java 设计模式中的一种常见模式,旨在保证整个应用中只有一个类的实例存在。单例模式分为三种:懒汉式单例、饿汉式单例、登记式单例。下面对单例模式的特点、实现方式和应用场景进行详细...

    单例模式Singleton

    synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } } ``` 这里使用`volatile`关键字确保了多线程环境下的可见性和有序性,减少了同步开销...

    单例模式讲解说明与实例

    synchronized (Singleton.class) { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } } } return uniqueInstance; } } ``` 这个实现使用 volatile 关键字来确保 singleton 对象的可见性...

    设计之模式之单例(Singleton)

    1. **单例模式的基本概念** - 单例模式的核心思想是限制类的实例化过程,只允许创建一个唯一的实例。 - 这个唯一的实例通常被静态方法管理,以保证在任何情况下都只有一个实例存在。 - 全局访问点使得代码可以在...

    Java设计模式-单例模式详解

    1. 单例模式可能会导致代码 耦合度增加,因为在某些情况下,单例对象可能会被多个类使用。 2. 单例模式可能会导致内存泄露,因为单例对象可能会长期驻留在内存中。 因此,在使用单例模式时,需要充分考虑到这些缺点...

    java设计模式期末考试选择题100道

    单例模式(Singleton) C.策略模式(Strategy) D.外观模式(Fagade) 12. (单选题)下面不属于创建型模式的有( 正确答案: C )。 A.抽象工厂模式( Abstract Factory ) B.工厂方法模式(Factory Method) C.适配器模式...

    ava常用设计模式-单例模式

    synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } } ``` 3. 静态内部类 静态内部类方式可以保证线程安全和性能,实现起来也比较简单。 ...

    单例模式代码

    1. 单例模式可以保证系统内存中该类只存在一个对象,节省了系统资源。 2. 对于频繁使用的对象,可以省去创建和销毁对象所花费的时间,提高性能。 3. 单例模式可以全局访问。 缺点: 1. 单例模式一般没有接口,扩展...

    21单例模式.zip

    1. 单例模式违背了“开闭原则”,不利于代码的扩展和维护。 2. 单例模式一般没有接口,扩展困难。如果要扩展,则除了修改原来的代码,没有第二种途径。 3. 单例模式对测试是不利的,因为无法构造独立的实例进行测试...

Global site tag (gtag.js) - Google Analytics