- 浏览: 73979 次
- 性别:
- 来自: 天津
文章分类
最新评论
单例模式的特点:保证在整个应用程序中只存在一个对象
单例模式的步骤:
1.把构造方法私有化,这样就能够保证只有本类能够创建本类的对象。(保证了本类只能创建本类的一个对象,外界不能创建本类的对象)
2.把需要共享的属性或者方法写成静态的,目的是供外界调用。但是当需要共享的属性和方法过多的时候,就会产生代码冗余,因此最好的办法就是直接把此类声明成静态的变量。
3.构造方法已经写好了,此时要做的就是创建对象了。用new关键字创建对象,把这个对象传给一个引用类型的变量private static Single s = new Single(),之所以要把这个对象赋值给一个引用类型的变量,是为了要用变量的static关键字。此时把这个对象共享了。此时外界可以用类名去调用这个类了,但是调用的也是这个类的静态方法(因为该类的对象是静态的,因此该类的对象调用方法的时候,也必须调用静态的方法),因此此时写一个静态方法供外界调用。public static Single getInstance() {return s;}
(外界虽然不能创建本类的对象,但是可以调用本类对象中的静态方法)
----------以下是代码:
public class Single
{
/**
例如程序员在电脑上下载文件,公司的所有程序员要用这个文件,但是没必要每个人都下载。只要有一个人下载,其他人用就行了
要求:只存在该类的一个对象
1 将构造函数私有化(这样的目的是只有本类自己能够产生我自己的对象,别人不能创建我。也就是说别人无法下载)
2 自己给创建对象 ()
3 提供公共static方法获得该类的对象
**/
private String str="";
private static Single s = new Single();//2.别人不能创建这个类的对象,那我自己给自己创建对象
private Single()//1.这个类的对象不能随便创建,只能本类创建
{
}
public static Single getInstance()//3.获取私有属性的值,用属性Single 的get方法,方法名字是实例的意思
{
return s;
}
public String getStr()
{
return this.str;
}
public void setStr(String str)
{
this.str=str;
}
public void read()
{
this.str="只存在该类的一个对象,下载文件";
}
}
---外界调用过程
public class SingleTest
{
public static void main(String[] args)
{
Single s1 = Single.getInstance();//实例化
s1.read(); //通过read方法,把值保存在属性str中了。
String str=s1.getStr();//获取str中的值,根据的是str的get方法
System.out.println("str="+str);//输出
Single s2 = Single.getInstance();//实例化
//s2.read(); //通过read方法,把值保存在属性str中了。
String str2=s2.getStr();//获取str中的值,根据的是str的get方法
System.out.println("str2="+str2);//输出
s2.setStr("111111111111111");//设置str值
Single s3 = Single.getInstance();//实例化
//s3.read(); //通过read方法,把值保存在属性str中了。
String str3=s3.getStr();//获取str中的值,根据的是str的get方法
System.out.println("str3="+str3);//输出
}
}
单例模式的步骤:
1.把构造方法私有化,这样就能够保证只有本类能够创建本类的对象。(保证了本类只能创建本类的一个对象,外界不能创建本类的对象)
2.把需要共享的属性或者方法写成静态的,目的是供外界调用。但是当需要共享的属性和方法过多的时候,就会产生代码冗余,因此最好的办法就是直接把此类声明成静态的变量。
3.构造方法已经写好了,此时要做的就是创建对象了。用new关键字创建对象,把这个对象传给一个引用类型的变量private static Single s = new Single(),之所以要把这个对象赋值给一个引用类型的变量,是为了要用变量的static关键字。此时把这个对象共享了。此时外界可以用类名去调用这个类了,但是调用的也是这个类的静态方法(因为该类的对象是静态的,因此该类的对象调用方法的时候,也必须调用静态的方法),因此此时写一个静态方法供外界调用。public static Single getInstance() {return s;}
(外界虽然不能创建本类的对象,但是可以调用本类对象中的静态方法)
----------以下是代码:
public class Single
{
/**
例如程序员在电脑上下载文件,公司的所有程序员要用这个文件,但是没必要每个人都下载。只要有一个人下载,其他人用就行了
要求:只存在该类的一个对象
1 将构造函数私有化(这样的目的是只有本类自己能够产生我自己的对象,别人不能创建我。也就是说别人无法下载)
2 自己给创建对象 ()
3 提供公共static方法获得该类的对象
**/
private String str="";
private static Single s = new Single();//2.别人不能创建这个类的对象,那我自己给自己创建对象
private Single()//1.这个类的对象不能随便创建,只能本类创建
{
}
public static Single getInstance()//3.获取私有属性的值,用属性Single 的get方法,方法名字是实例的意思
{
return s;
}
public String getStr()
{
return this.str;
}
public void setStr(String str)
{
this.str=str;
}
public void read()
{
this.str="只存在该类的一个对象,下载文件";
}
}
---外界调用过程
public class SingleTest
{
public static void main(String[] args)
{
Single s1 = Single.getInstance();//实例化
s1.read(); //通过read方法,把值保存在属性str中了。
String str=s1.getStr();//获取str中的值,根据的是str的get方法
System.out.println("str="+str);//输出
Single s2 = Single.getInstance();//实例化
//s2.read(); //通过read方法,把值保存在属性str中了。
String str2=s2.getStr();//获取str中的值,根据的是str的get方法
System.out.println("str2="+str2);//输出
s2.setStr("111111111111111");//设置str值
Single s3 = Single.getInstance();//实例化
//s3.read(); //通过read方法,把值保存在属性str中了。
String str3=s3.getStr();//获取str中的值,根据的是str的get方法
System.out.println("str3="+str3);//输出
}
}
发表评论
-
二分法、冒泡排序
2017-03-03 10:31 359import java.util.Scanner;/** ... -
for、while循环,打印三角形、菱形
2017-03-03 09:54 545import java.util.Scanner;publi ... -
单线程与多线程
2016-01-16 12:10 616单线程:按照程序 ... -
字节流,字符流,对象流,序列化,持久化
2016-01-15 11:25 675第一:读写字符串 input(读文件里的内容) 的步骤: ... -
深入反射、IO文件、字节流
2016-01-15 11:11 465第一:反射相关的概念 1.反射中调用构造函数默认都是调用 ... -
百度字符串
2016-01-07 17:41 5491、length() 字符串的长度 例:char char ... -
map集合转化成list集合
2015-12-28 15:52 1669package emp; public class Emp ... -
反射
2015-12-28 15:47 421第一:反射的概念 1.(1).java程序源文件(属性和 ... -
泛型
2015-12-28 15:24 397第一:泛型:问题:1.在运算时候必须要向下转型。向下转型存 ... -
map集合和他的实现类hasHmap(不安全)和hashTable(安全)
2015-12-28 15:15 607第一:初步认识map 1.键值对(key与value是一一 ... -
set接口和它的实现类treeset和hashset
2015-12-01 22:50 538第一:set接口:set接口里面的元素不能重复,因此nul ... -
Collection集合根接口、两个子接口list和set
2015-11-30 22:29 618第一:由数组的 ... -
String与StringBuffer、Date日期与SimpleDateFormat 简单的日期格式化
2015-11-29 22:31 643第一:String类:字符串常量1.String是一个类, ... -
异常与异常类
2015-11-25 22:58 391第一.异常的概念:异常就是程序在运行中的错误,程序中的异常用异 ... -
快捷键
2015-11-24 23:06 2891.导包:ctrl+shift+O 2.找类:ctrl+shi ... -
向下转型与instanceof 关键字,object类(系统类)中的常用方法
2015-11-24 23:02 945第一:向下转型 1.向下 ... -
接口,抽象类与接口的关系。多肽、向上转型与动态绑定的引出
2015-11-23 22:04 456第一:在引入接口之前 ... -
关键字:extends继承、abstract 抽象,继承与抽象类之间的关系、final最终的
2015-11-22 17:02 854----继承 1.extends的是继承或者扩展的意思。父类写 ... -
this和static关键字,javadoc文档的产生
2015-11-22 15:51 336----this和static关键字 public class ... -
java内存分析
2015-11-22 15:16 2571.局部变量中的引用类型是把地址存到栈内存中,由栈内存中的地址 ...
相关推荐
单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C#中,单例模式常用于管理共享资源或控制类的实例化过程,以提高性能、节约系统资源,特别是在整个应用程序生命周期内只需要一...
单例模式是软件设计模式中的一种经典模式,用于确保一个类只有一个实例,并提供一个全局访问点。在Java中,有多种实现单例模式的方法,每种都有其特点和适用场景。接下来,我们将深入探讨这些实现方式。 首先,我们...
在C++编程中,单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局访问点。线程安全的单例模式在多线程环境下尤其重要,因为不正确的实现可能导致多个线程创建多个实例,这违反了单例模式...
**设计模式——单例模式** 在软件工程中,设计模式是一种在特定场景下解决常见问题的标准方案,可以被复用并提升代码质量。单例模式是设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。这种模式...
单例模式是软件设计模式中的一种经典模式,其主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下非常有用,比如控制共享资源、管理配置对象等。下面将详细介绍七种常见的单例模式实现...
单例模式是软件设计模式中的一种,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,比如控制资源的唯一性、管理共享配置或者创建昂贵的对象时避免频繁创建销毁。 ...
Java中的单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供全局访问点。在Java编程中,单例模式常用于控制资源的访问,比如数据库连接池、线程池或者日志对象等。本篇文章将深入探讨如何在Java中...
单例模式是一种设计模式,它的主要目标是确保一个类只有一个实例,并提供一个全局访问点。在软件工程中,单例模式常用于控制资源的共享,比如数据库连接池、线程池或者日志系统等,这些资源通常需要全局唯一且高效地...
单例模式是软件设计模式中的经典模式之一,其主要目的是控制类的实例化过程,确保在应用程序的整个生命周期中,某个类只有一个实例存在。这样的设计通常适用于那些需要频繁创建和销毁,但资源消耗较大的对象,如...
单例模式是软件设计模式中的一种,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。在Java或类似的面向对象编程语言中,单例模式常用于管理共享资源,如数据库连接池、线程池或者配置文件等。在这个...
单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C++中,实现单例模式有多种方法,我们将会深入探讨这一模式的原理、优缺点以及如何在实际编程中应用。 单例模式的核心在于...
单例模式是软件设计模式中的一种基础且广泛应用的模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在系统中需要频繁创建和销毁对象,且对象创建成本较高,或者需要共享资源的情况下非常...
单例模式是软件设计模式中的一种经典模式,其核心思想在于限制类的实例化过程,确保在整个应用程序中只有一个实例存在。这种模式常用于管理共享资源,例如数据库连接、线程池或者全局配置等,以避免资源浪费和状态...
Java设计模式之单例模式的七种写法 单例模式是一种常见的设计模式,它确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机的驱动程序对象常...
### Java 单例模式详解 #### 一、什么是单例模式? 单例模式是一种常用的软件设计模式,在这种模式中,一个类只能拥有一个实例,并且该类必须自行创建并提供这个实例。通常,单例模式用于确保某个类在整个应用程序...
单例模式是一种常用的设计模式,它的核心思想是在整个应用程序中,一个类只能有一个实例存在。单例模式常用于控制资源的共享,例如数据库连接池、日志服务等。单例模式有多种实现方式,常见的包括懒汉式、饿汉式以及...
单例模式详解 单例模式是 Java 设计模式中的一种常见模式,旨在保证整个应用中只有一个类的实例存在。单例模式分为三种:懒汉式单例、饿汉式单例、登记式单例。下面对单例模式的特点、实现方式和应用场景进行详细...
单例模式是一种设计模式,它控制了类的实例化过程,确保一个类只有一个实例,并提供一个全局访问点。在PHP中,单例模式通常用于管理共享资源,如数据库连接、缓存系统或日志记录,因为这些场景下,创建多个实例可能...