需求大部分时候,我们把类的构造器定义成public访问权限,允许任何类自由创建这个 类的实例对象,但是某些时候,允许其他类自由创建这个类的对象没有任何意义,还可能造成了系统性能的下降(因为创建一个对象的系统开销问题),例如系统可 能自己hi有一个窗口管理器,一个假脱机打印设备或者一个数据库引擎访问点,这个时候如果在系统中创建多个对象就没有太大的时机意义,
如果一个类始终只能创建一个实例,则这个类就被称为单例类
这个时候我们就应该把类的构造器用private修饰,从而把这个类的所有构造器隐藏起来
根据封装型的原则:一旦把类的构造器隐藏起来,就需要提供一个public方法作为这个类的访问点,用于创建这个类的对象,且这个方法必须是static修饰(因为调用这个方法之前还不存在对象,因此调用这个方法不可能是对象,只能是类);
不仅如此,这个类还必须缓存已经创建的对象,不然这个类无法知道是不是已经创建了一个对象,也就无法只保证只创建了一个对象了,为此我们需要提供一个属性来保存曾经创建的对象,因为这个属性要被上面的静态方法访问,所以必须要用static修饰
下面我们用程序来说明这一点[code=java]package cn.itcast.heima
class Singleton
{
//使用一个变量来缓存曾经创建的实例
private static Singleton instance;
//将构造器使用private修饰,隐藏该构造器
private Singleton(){}
//提供一个静态方法,用于返回Singleton实例
//该方法可以加入自定义的控制,保证只产生一个Singleton对象
public static Singleton getInstance()
{
//如果instance为null,表明还不曾创建Singleton对象
//如果instance不为null,则表明已经创建了Singleton对象,将不会执行该方法
if (instance == null)
{
//创建一个Singleton对象,并将其缓存起来
instance = new Singleton();
}
return instance;
}
}
public class TestSingleton
{
public static void main(String[] args)
{
//创建Singleton对象不能通过构造器,只能通过getInstance方法
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
//将输出true
System.out.println(s1 == s2);
}
}[/code]
- 浏览: 40145 次
- 性别:
- 来自: 天津
最新评论
-
spiniper:
重复发明轮子,apache的commons包,已经有完整的实现 ...
java 字符串,集合,数组,数值的验证是否为空
相关推荐
"设计模式单例模式和工厂模式综合应用"的主题聚焦于两种常用的设计模式:单例模式和工厂模式,并探讨它们如何协同工作来实现高效、灵活的代码结构。这个主题尤其适用于Java编程语言,因为Java的面向对象特性使得设计...
单例模式是软件设计模式中的一种经典模式,它保证了类只有一个实例存在,并提供一个全局访问点。在Java等面向对象编程语言中,单例模式常用于管理共享资源,如数据库连接池、线程池或者配置文件等。结合工厂模式,...
单例模式和工厂模式是两种常见的软件设计模式,在面向对象编程中扮演着重要的角色。它们都是为了解决特定的问题而提出的解决方案,但有着不同的应用场景和设计思路。 **单例模式** 是一种限制类实例化次数的模式,...
策略模式和单例模式是软件设计中两种非常重要的设计模式,它们在实际开发中有着广泛的应用。在这篇文章中,我们将深入探讨这两种模式的核心概念、实现方式以及如何在实际项目中运用。 策略模式是一种行为设计模式,...
单例模式是一种设计模式,它保证了一个类只有一个实例,并提供一个全局访问点。这种模式在 PHP 中尤其适用于控制共享资源,例如数据库连接、缓存服务或者配置对象,确保在整个应用程序中这些资源只被初始化一次。 ...
单例模式是软件设计模式中的一种,它的核心思想是确保一个类在整个系统中只有一个实例存在,并提供一个全局访问点。在Qt5框架中,我们可以通过特定的方式来实现这一模式,以便在多个模块之间共享数据或者控制资源。...
**设计模式——单例模式** 单例模式是一种广泛应用于软件设计中的创建型设计模式,它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。这样做的好处在于控制共享资源的访问,比如线程安全的数据库连接池...
在软件设计模式中,工厂模式和单例模式是两种非常基础且重要的模式,它们都是用于解决对象创建问题,但有着不同的设计理念和应用场景。本篇文章将深入探讨这两种模式,并结合具体的代码示例`myFactoryDemo`进行讲解...
单例模式是软件设计模式中的一种经典模式,它在Java编程中被广泛使用。这个模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这样做的好处包括资源管理(如数据库连接)、性能优化(如缓存服务)以及...
单例模式的核心思想是确保类只有一个实例,并提供全局访问点。这样做的好处是可以避免由于多次实例化而导致的资源浪费,同时可以集中管理全局状态,确保所有部分都操作同一份数据。 ### 实现单例模式 在 PHP 中...
在开发过程中,合理地使用单例模式可以带来很多好处: 1. **资源消耗降低**:由于在整个应用中只存在一个实例,因此减少了内存开销,特别是在一个对象需要大量资源时。 2. **全局访问点**:单例模式可以为整个系统...
1. **节省内存**:由于单例模式限制了类的实例只有一个,所以在内存中只会创建一次,减少了内存的开销,特别是当实例化一个对象需要消耗大量资源时,单例模式的优势更为明显。 2. **控制资源的使用**:通过线程同步...
在软件设计模式的世界里,"工厂单例模式典范"是一个重要的概念,它结合了工厂模式和单例模式的优势,以解决特定的编程问题。工厂模式是一种创建型设计模式,而单例模式则是一种结构型设计模式。这两种模式的结合使得...
在众多设计模式中,“简单工厂”、“代理模式”和“单例模式”是三种常见的设计模式,它们各自有着明确的使用场景和设计目标。 首先,“简单工厂模式”是一种创建型模式,它定义了一个创建对象的接口,但让决定创建...
Java单例模式是设计模式中的一种,在软件开发中扮演着重要的角色。单例模式的目的是保证一个类仅有一个实例,并且提供一个全局访问点。在Java中实现单例模式有多种方法,主要包括懒汉式、饿汉式、注册式(使用容器)...
单例模式是软件设计模式中的一种,用于控制类的实例化过程,确保一个类在整个程序运行期间只有一个实例存在。这种模式常被用于管理共享资源,如数据库连接、线程池或者配置文件等,以减少系统资源的浪费并提高效率。...
Java单例模式是一种常见的设计模式,它在软件工程中用于控制类的实例化过程,确保一个类只有一个实例,并提供一个全局访问点。这种模式在系统资源管理、缓存、日志记录等方面应用广泛。下面我们将深入探讨Java单例...
单例模式是软件设计模式中的一种,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,比如控制数据库连接、日志记录、线程池管理等,确保了资源的有效管理和高效利用。...
懒汉式单例模式的特点是在第一次使用时才进行实例化,这种方式的好处是延迟加载,节省内存空间;缺点是如果处理不当可能会导致多线程环境下的并发问题。 ##### 实现代码示例 ```java public class Singleton { ...
在本文中,我们将深入探讨两个主要的设计模式:工厂模式和单例模式,以及它们在实际应用中的特点。 1. 工厂模式: 工厂模式是一种对象创建型设计模式,它提供了一种创建对象的最佳方式,通过将实例化过程封装在单独...