`

由static引出单例模式

    博客分类:
  • j2se
 
阅读更多
单例模式的特点:保证在整个应用程序中只存在一个对象
单例模式的步骤:
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);//输出
}
}
分享到:
评论

相关推荐

    第5天static静态关键字和单例模式.pptx

    static静态关键字和单例模式

    这可能是最全的单例模式了

    枚举实现单例模式static修饰下是怎么做到线程安全的?完全不使用synchronized实现单例模式1. CAS(AtomicReference)实现单例模式2. ThreadLocal实现单例模式如何破坏单例如何防止单例被破坏参考文章 单例模式有...

    设计模式之单例模式程序

    设计模式里面的单例模式程序 package com.rrppff; public class Singleton { private static String name; public static String getName() { return name; } public static void setName(String name) { ...

    设计模式—— 七 :单例模式

    单例模式的实现饿汉式懒汉式线程安全的懒汉式登记式单例模式的优缺点单例模式的优点单例模式的缺点 单例模式是23个模式中比较简单的模式,应用也非常广泛 什么是单例模式? 单例模式的定义: Ensure a class ...

    设计模式学习之单例模式

    单例模式,顾名思义,只有一个实例,因此这种模式只有在真正的需求“单一实例”的时候使用。它提供一种方法来确保某一特定类型有且只有一个实例。而且自行实例化,并向外部提供这个单一实例。 在它核心结构中,只...

    10、面向对象进阶(static、单例、代码块、继承).pptx

    10、面向对象进阶(static、单例、代码块、继承).pptx

    java 设计模式 单例模式

    //单例模式,始终只产生一个对象 /*public class SingleTest { public static void main(String[] args) { SingleTon singleTon1=SingleTon.getInstance(); SingleTon singleTon2=SingleTon.getInstance(); ...

    Java设计模式之单例模式及其应用

    一、 单例模式概述  Java中单例模式的定义是:一个类只有一个实例,而且自行实例化并且向整个系统提供这个实例。  优点:由于单例模式在内存中只有一个实例,减少了内存开支和系统的性能开销;单例模式可以避免...

    PHP单例模式是什么 php实现单例模式的方法

    一、什么是单例模式? 1、含义   作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。 2、...

    项目中用到的jdbc连接 单例模式

    * 类载入到jvm的时候,会进行初始化,但是只会初始化static成员和static代码块, * 而不会初始化静态内部类的成员。因此,只有实际调用getInstance的时候, * 才会初始化静态内部类的静态成员。做到了延迟加载。 ...

    老生常谈C++的单例模式与线程安全单例模式(懒汉/饿汉)

    我们都很清楚一个简单的单例模式该怎样去实现:构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实例的动作由一个public的类方法代劳,该方法也返回单例类...

    java设计模式–单例模式推理过程

    java 设计模式–单例模式推理过程 设计模式(全名:软件设计模式),是一套反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性...

    Android Singleton单例模式Demo

    Android Singleton单例模式运用详解

    java设计模式——单例模式

    单例模式 来了来了,他来了。大家好,我是老王。今天给大家带来的是23种设计模式的第一种——单例模式。前天写的第一篇文章设计模式的七大原则,是我第一次写文章,目前看了浏览量,让我信心大增。文章有什么讲述...

    php设计模式 Singleton(单例模式)

    php /** * 单例模式 * * 保证一个类仅有一个实例,并提供一个访问它的全局访问点 * */ class Singleton { static private $_instance = null; private function __construct() { } static public function ...

    [创建型模式] 单例模式(Singleton Pattern)

    单例对象必须由单例类自行创建,并对外提供访问入口 一个类可以创建多个对象,这是面向对象的语言特性,想要实现单例模式,就要屏蔽这个特性,防止系统可以随意创建类的对象。 要做到这一点,通常做法就是利用...

    c# 单例模式的实现方法

    单例模式大概是所有设计模式中最简单的一种,如果在面试时被问及熟悉哪些设计模式,你可能第一个答的就是单例模式。 单例模式的实现分为两种:饿汉式和懒汉式。前者是在静态构造函数执行时就立即实例化,后者是在...

    PHP设计模式之单例模式定义与用法分析

    单例模式(Singleton Pattern 单件模式或单元素模式),是常见的一种设计模式,它有三个特点 1.只能有一个实例 2.必须自行创建这个实例 3.必须给其他对象提供这一实例 下面用PHP代码实现一下 <?PHP /** *...

    第1章-第3节(重载、this关键字、构造器、static、final、封装、单例模式).md

    第1章-第3节(重载、this关键字、构造器、static、final、封装、单例模式).md

    多线程下的单例模式优化

    这是一个关于多线程下的单例模式优化代码。public class Singleton { private static Singleton instance; private Singleton (){ } public static Singleton getInstance(){ //对获取实例的方法进行同步 if...

Global site tag (gtag.js) - Google Analytics