`

单例模式学习及控制实例化对象个数

    博客分类:
  • Java
阅读更多
单例模式学习:
package com.amaker.single;

import java.util.HashMap;
import java.util.Map;

public class People {
	//===============================================================
	//标准的单例
	private static People p = null;
	private People(){
		
	}
	
	public static People getInstance(){
		if(p==null){
			p = new People();
		}
		return p;
	}
	//===============================================================
	//利用缓存的单例
	private static Map<String,People> map = new HashMap<String,People>();
	public static People getInstance2(){
		People p = map.get("one");
		if(p==null){
			p = new People();
			map.put("one", p);
		}
		return p;
	}
	//===============================================================
	//实例化三个或更多实例,可以按要求实例化对象个数,如下面的count可以从配置文件中读取
	private static int number = 1;
	private static int count = 3;
	public static People getInstance3(){
		p = map.get(number+"");
		if(p==null){
			p = new People();
			map.put(number+"", p);
		}
		number++;
		if(number>count){
			number = 1;
		}
		return p;
	}
}


package com.amaker.client;

import com.amaker.single.People;

public class Test {
	public static void main(String[] args) {
		//单例测试:
		/*People p1 = People.getInstance();
		System.out.println("p=="+p1);
		
		People p2 = People.getInstance();
		System.out.println("p=="+p2);
		
		People p3 = People.getInstance();
		System.out.println("p=="+p3);
		*/
		
		//缓存测试:
		/*People p1 = People.getInstance2();
		System.out.println("p=="+p1);
		
		People p2 = People.getInstance2();
		System.out.println("p=="+p2);
		
		People p3 = People.getInstance2();
		System.out.println("p=="+p3);*/
		
		//控制对象的个数,暂时实例化三个对象
		People p1 = People.getInstance3();
		System.out.println("p=="+p1);
		
		People p2 = People.getInstance3();
		System.out.println("p=="+p2);
		
		People p3 = People.getInstance3();
		System.out.println("p=="+p3);
		
		People p4 = People.getInstance3();
		System.out.println("p=="+p4);
		
		People p5 = People.getInstance3();
		System.out.println("p=="+p5);
		
	}
}

分享到:
评论

相关推荐

    单例模式讲解说明与实例

    单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。 ...

    java单例模式实例

    单例模式是软件设计模式中的一种经典模式,用于确保一个类只有一个实例,并提供一个全局访问点。在Java中,有多种实现单例模式的方法,每种都有其特点和适用场景。接下来,我们将深入探讨这些实现方式。 首先,我们...

    设计模式-Java单例模式的各种实现实例

    单例模式具有一定的“防并发作用”,由于单例模式只生成一次实例化对象,可以减少系统内存的开销,特别是对于多线程单例,即可以在系统启动时完成实例化,避免对资源的重复占用。 单例模式可以作为程序中的“全局锁...

    单例模式的扩展及其应用

    编写一个类LimitInstanceClass,该类最多可以实例化指定个数实例。实例的个数用配置文件InstanceLimit.cfg指定。例如,如果InstanceLimit.cfg的内容为2,则LimitInstanceClass最多可以同时存在2个对象。...

    单例模式java代码

    编写一个类LimitInstanceClass,该类最多可以实例化指定个数实例。实例的个数用配置文件InstanceLimit.cfg指定。例如,如果InstanceLimit.cfg的内容为2,则LimitInstanceClass最多可以同时存在2个对象。...

    几种单例模式说明(并有实例)

    单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局访问点。在多线程环境下,单例模式可以避免对资源的重复加载,降低系统的内存开销,提高系统性能。单例模式通常分为懒汉式、饿汉式、...

    设计模式单例模式和工厂模式综合应用

    **单例模式**是一种限制类实例化次数的模式,确保一个类只有一个实例,并提供全局访问点。在Java中,通常通过私有构造函数和静态工厂方法来实现单例。单例模式常用于控制共享资源,如线程池、数据库连接或者配置对象...

    设计模式之单例模式(结合工厂模式)

    单例模式的核心在于控制类的实例化过程,常见的实现方式有懒汉式、饿汉式和双重检查锁定(DCL)等。懒汉式是在类被加载时并不创建实例,而是在第一次调用getInstance方法时才创建;饿汉式则是在类加载时就创建实例,...

    php单例模式实例

    1. 封锁构造函数:通过将构造函数声明为私有(private),防止外部直接通过`new`关键字实例化对象。 ```php class Singleton { private function __construct() {} } ``` 2. 创建一个静态方法:这个方法通常命名为...

    为什么要使用PHP单例模式及应用实例.docx

    单例模式(Singleton Pattern)是一种常见的设计模式,在软件工程中被广泛应用于确保一个类仅有一个实例,并且该实例可以被全局访问。具体到PHP环境中,单例模式的关键点如下: 1. **唯一实例**:确保类只有一个...

    代理模式、单例模式、工厂模式实例代码

    - **单例模式**:实现一个`Singleton`类,通过私有构造函数确保不能直接实例化,提供一个静态方法`getInstance()`返回唯一的实例。 - **工厂模式**:定义一个`VehicleFactory`接口,包含生产车辆的方法,然后创建`...

    C# 单例模式小实例

    单例模式是一种常用的软件设计模式,它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。在C#中,单例模式的应用广泛,尤其是在处理系统资源、数据库连接、配置文件等需要全局共享且只创建一次的对象时。...

    C#单例模式详解 C#单例模式详解C#单例模式详解

    在C#中,单例模式常用于管理共享资源或控制类的实例化过程,以提高性能、节约系统资源,特别是在整个应用程序生命周期内只需要一个对象的情况下。 首先,实现C#单例模式通常有几种常见方法: 1. 饿汉式(静态常量...

    Java单例模式设计

    Java单例模式是一种常用的设计模式,它保证一个类只有一个实例,并提供全局访问点。这种模式在需要频繁创建和销毁对象的场景中,或者当对象昂贵时(如数据库连接),能够节省系统资源,提高效率。本篇文章将深入探讨...

    单例模式的要点及模式

    1. **唯一实例**:在单例模式中,类的实例化过程被严格控制,确保任何时候都只有一个实例。这通常通过私有化构造函数来实现,防止外部直接创建对象。 2. **自行实例化**:单例类负责自己的实例化过程,即在类内部...

    单例模式概念与实例(简单实例)

    3. **控制实例的创建**:单例模式可以防止其他对象随意创建实例,从而更好地控制实例的创建过程。 ### 单例模式的实现方式 根据给定的部分内容,我们可以看到几种不同的实现单例模式的方式。 #### 1. 饿汉式...

    单例模式PHP实现代码类.zip

    - 单例模式的关键在于防止其他部分的代码通过常规构造函数再次实例化对象。 2. **PHP中的单例模式实现**: - PHP单例模式实现的核心是控制构造函数的访问权限,使其私有(private),防止外部直接实例化。 - ...

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

    以上是最常见的懒汉式单例实现,它在首次调用`getInstance()`时才实例化对象,延迟了初始化,具有线程安全特性。但这种方式在多线程环境下可能存在问题,因为`instance`的初始化不是原子操作,可能导致多个线程同时...

    设计模式——单例模式

    单例模式的核心思想是限制类的实例化,使得无论通过何种方式,都只能获取到同一个对象。实现单例模式主要有两种方式:饿汉式和懒汉式。 ### **饿汉式单例模式** 饿汉式单例模式在类加载时就完成了实例化,因此也...

    单例模式演示PPT和实例

    总结来说,单例模式是设计模式的一种,它的核心是限制类的实例化次数为一次,以达到控制共享资源的目的。Java中有多种实现方式,包括饿汉式、懒汉式和登记式,它们在实现细节和性能上有差异,适用于不同的应用场景。...

Global site tag (gtag.js) - Google Analytics