`
jiangduxi
  • 浏览: 458673 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

学习设计模式之单例模式

 
阅读更多

   单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

单例模式的要点:
  • 某个类只能有一个实例
  • 它必须自行创建这个实例
  • 它必须自行向整个系统提供这个实例


java基础知识回顾

  • 对象是从何而来
  • public protected private 关键字的作用范围
  • static,final 关键字的作用


第一个问题: 对象从而而来。这个估计学java的都知道,是通过new出来的
    public class A{
       //
    }

如果要等到A的对象,那么必须A a = new A();这样得到A的对象。那么为什么可以这样做呢。因为上述这个A 类的完整形式如下
   public class A{
     public A(){}//构造方法
    }

你得到A的对象a其实是通过这个构造方法得到的,并且这个构造方法是public类型的。所以用new A()就可以得到A的一个对象。

第二个问题: public,protected, private关键字的作用范围
public、protected、private三种显示的修饰符用于控制可见性.
引用

   public   对无论任何类都可见
    protected只对子类可见
    private只对该类可见

试想下如果你将你的构造方法由public 改为private那么会出现什么情况呢
    public class A{
      private A(){}
     }

由于private只对该类可以,因此如果你通过 A a = new A()。这样做不行的。如果你将A的构造函数的访问权限改为private的话,对外就隐藏这个A的对象了。
如果你想得到A的对象a的话,进必须由A自己对外提供,这里有两种方法,一种是利用static关键字,一种是定义个方法这个方法一定不是private,通过这个方法来进行对外提供A的对象。

第三个问题: static,final关键字
static关键字
  • 静态方法和静态变量是属于某一个类,而不属于类的对象
  • 静态方法和静态变量的引用直接通过类名引用
  • 在静态方法中不能调用非静态的方法和引用非静态的成员变量。反之,则可以
  • 静态变量在某种程序上与其他语言的全局变量相类似,如果不是私有的就可以在类的外部进行访问

final  关键字
final:无法被改变的
  • 一个永不改变的编译时常量
  • 一个在运行时候被初始化的值,而你不希望它被改变

static和final结合定义表示:一块永远不被改变的存储空间

理解上面三个java的基础知识后,我们看看单例模式怎么出现的
   public class A{
      priavte statc final A a = new A();
      private A(){
     }
     public static A getInstance(){
       return a;
     }
   }

这个就是实现了一个简单的单例模式。在这个例子中外部想得到A类的通过A提供的getInstace()方法。并且由于a是被static 和final所以就达到单例的效果。
不过单例模式又分为饿汉式和懒汉式。其实主要区别就是A类在初始化A的对象a的时候,

分享到:
评论

相关推荐

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

    在项目中,`src`目录可能包含了这些设计模式的源码示例,可以用来学习和理解如何实际应用单例模式和工厂模式。通过阅读和分析这些代码,你可以更深入地理解这两种模式的实现细节及其在实际开发中的作用。同时,也...

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

    "设计模式单例模式和工厂模式综合应用"的主题聚焦于两种常用的设计模式:单例模式和工厂模式,并探讨它们如何协同工作来实现高效、灵活的代码结构。这个主题尤其适用于Java编程语言,因为Java的面向对象特性使得设计...

    设计模式之单例模式

    单例模式是软件设计模式中的一种经典模式,其主要目的是保证一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下非常有用,比如控制系统资源(如数据库连接池)、配置管理、日志服务等,确保在整个应用...

    研磨设计模式之单例模式

    通过研磨设计模式之单例模式的资料,你可以深入理解单例模式的原理、实现方式及其优缺点,进一步提升自己的编程技能和设计思维。学习并熟练掌握设计模式,对于成为一名优秀的Java开发者至关重要。

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

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

    php设计模式之单例模式_.docx

    ### PHP设计模式之单例模式详解 #### 一、引言 在软件工程领域,设计模式是一种被广泛接受的解决方案,用于解决特定类型的问题。PHP作为一种流行的服务器端脚本语言,同样可以从这些设计模式中受益。本文将详细介绍...

    设计模式 中的 单例模式和观察者模式

    设计模式是软件工程中的一种最佳实践,用于解决常见的设计问题并提供可重用的解决方案。在给定的标题和描述中,我们关注的是两种重要...在学习和实践中,可以尝试结合不同的设计模式,创造出更加灵活和高效的软件架构。

    C++中的三大设计模式:单例模式、工厂模式与观察者模式的代码实现

    内容概要:本文档介绍了三个经典的软件设计模式——单例模式(Singleton Pattern)、工厂模式(Factory Pattern)以及观察者模式(Observer Pattern)的具体实现,并给出了带有详细注释的C++代码范例。对每个设计模式都有...

    设计模式——单例

    单例模式是一种常用的设计模式,它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。这样做的目的是为了控制对象的创建,特别是在系统资源有限或者需要协调多个组件时。 单例模式的应用场景通常包括以下...

    java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂 第二部分

    在编程领域,设计模式是一种被广泛接受的解决常见问题的模板或最佳实践。Java作为一款广泛应用的面向对象的编程语言,其设计模式的应用...通过学习和熟练掌握这些设计模式,开发者能够更好地应对复杂软件工程的需求。

    java设计模式,单例模式学习示例源码,创建单例,配置文件读取

    单例模式是23种经典设计模式之一,它确保一个类只有一个实例,并提供一个全局访问点。这个模式在很多场景下非常有用,比如控制资源的共享,如数据库连接池,或者创建昂贵的对象时避免频繁实例化。 单例模式的基本...

    设计模式学习之单例模式

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

    设计模式单例模式PPT学习教案.pptx

    设计模式单例模式学习教案 单例模式概述 单例模式是设计模式中的一种,用于确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。这种模式对对象的创建和访问进行了限制,以确保系统中只有一个实例...

    Qt单例设计模式(1-8)

    在软件开发中,设计模式是一种在特定情境下解决常见问题的经验总结,被广泛应用于各种编程语言中。在Qt框架中,单例设计模式是一...通过学习和实践,你将能够更好地理解和运用Qt中的单例设计模式,提升你的Qt编程技能。

    简单工厂,代理模式,单例模式demo

    在众多设计模式中,“简单工厂”、“代理模式”和“单例模式”是三种常见的设计模式,它们各自有着明确的使用场景和设计目标。 首先,“简单工厂模式”是一种创建型模式,它定义了一个创建对象的接口,但让决定创建...

    C#设计模式–单例模式

     近在学设计模式的一些内容,主要的参考书籍是《Head First 设计模式》,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了帮助我更深入地理解设计模式,二...

    白话讲解创建型设计模式:单例原型构建

    在软件设计中,设计模式是一种解决常见问题的模板,它们是经过验证的、高效的设计解决...因此,不断学习和实践设计模式是每个开发者成长的必经之路。如果你在实际开发中遇到了理解上的困难,欢迎与他人交流,共同进步。

    设计模式源代码--工厂模式与单例

    在学习和使用这些设计模式时,理解其背后的意图和应用场景至关重要。工厂模式用于解耦对象的创建和使用,而单例模式则用于控制对象的唯一性。通过深入理解和实践这些模式,开发者可以编写出更加优雅、易于维护的代码...

    Java常用的3中设计模式代码即工厂模式、单例模式、观察者模式demo

    单例模式也是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点。这种模式在需要频繁实例化然后销毁的对象,或者创建对象需要消耗大量资源的场景中非常有用。在Java中,实现单例模式有多种方式,...

    java单例模式实例

    单例模式是软件设计模式中的一种经典模式,用于确保一个类只有一个实例,并提供一个全局访问点。...通过学习和实践这些单例模式的实现,我们可以更好地理解和应用设计模式,提升代码的质量和可维护性。

Global site tag (gtag.js) - Google Analytics