黑马程序员--单例设计模式

单例设计模式:
解决的问题:保证一个类在内存中的对象唯一性。
比如:多程序读取一个配置文件时,建议配置文件封装成对象。会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中是唯一的。

Runtime()方法就是单例设计模式进行设计的。

如何保证对象唯一性呢?
思想:
1,不让其他程序创建该类对象。
2,在本类中创建一个本类对象。
3,对外提供方法,让其他程序获取这个对象。

步骤:
1,因为创建对象都需要构造函数初始化,只要将本类中的构造函数私有化,其他程序就无法再创建该类对象;
2,就在类中创建一个本类的对象;
3,定义一个方法,返回该对象,让其他程序可以通过方法就得到本类对象。(作用:可控)

代码体现:
1,私有化构造函数;
2,创建私有并静态的本类对象;
3,定义公有并静态的方法,返回该对象。

Class Single
{
     private static final Single s=new Single();
     private Single(){};
     public static Single getInstance()
    {
       return s;
     }
}

懒汉式:
Class Single
{
   Private static Single s=null;
   Private Single(){};
   Public static synchronized Single getInstance()
   {
      If(s==null)
         S=new Single();
      return s;
    }
}

加这个synchronized 会使效率变低,但是如果不加这个关键字,会导致无单例模式的效果。
可以通过这种方式解决:
class Single
{
   private static Single s=null;
   private Single(){};
   public static Single getInstance()
   {
      if(s==null)
      {
          synchronized(Single.class)
         {
          if(s==null)
                 s=new Single();
         }
       }
       return s;
   }
}
原则:定义单例时,建议使用饿汉式。

黑马程序员--单例设计模式

时间: 2024-11-06 09:39:45

黑马程序员--单例设计模式的相关文章

黑马程序员——单例设计模式

------- <a href="http://www.itheima.com" target="blank">android培训</a>.<a href="http://www.itheima.com" target="blank">java培训</a>.期待与您交流! ---------- 单例设计模式的作用:使一个类在内存中只存在一个对象. 用代码实现单例设计模式需要做三部

黑马程序员_09. api-线程及单例设计模式

黑马程序员_api-线程及单例设计模式 a.明确以下概念: 1.进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或叫一个控制单元. 2.线程:就是进程中的一个独立的控制单元.线程在控制着进程的执行,一个进程中至少有一个线程. 3.多线程:如果一个进程中存在着多个控制单元,那么这个进程是一个多线程的应用程序.JVM启动时是一个多线程. b.创建线程的两种方式 1. java已经提供了对线程这类事物的描述.就是Thread类.并且这个类把要运行的代码存放在了run

黑马程序员--Java基础学习笔记【单例设计模式、网络编程、反射】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 设计模式分类: 创建模式:是对类的实例化过程的抽象化,又分为类创建模式和对象创建模式 类创建模式:工厂方法模式 对象-:简单工厂(静态工厂方法)模式.抽象工厂模式.单例模式.建造模式- 结构模式:描述如何将类或者对象结合在一起形成更大的结构 适配器模式.缺省模式.合成模式.装饰模式(包装模式).门面模式- 行为模式:对不同的对象之间划分责任和算法的抽象化 不变模式.策略模式.迭代子模式.命令模

黑马程序员-学习日记(单例设计模式的两种类型)

单例设计模式:解决一个类在内存中只有一个对象 多个程序使用统一配置信息对象时,需要保证该对对象的唯一性. 保证对象唯一性的实现步骤: 1.将构造函数私有化:为了避免其他程序过多建立该对象,禁止其他程序调用该对象. 2.在类中创建一个本类对象:为了让其他程序可以访问该类对象 3.提供一个方法可以获取到该对象的方法:方便其他程序访问自定义的本类对象.(类方法的访问方式只有两种,建立对象或定义为静态方法)

【黑马】程序员————多线程(二)单例设计模式、线程间通信,JDK1.5互斥锁

------Java培训.Android培训.iOS培训..Net培训.期待与您交流!----- 一.单例设计模式 单例设计模式的意义: A.保证类在内存中只有一个对象,不提供外部访问方式,构造函数用private修饰. B.提供公共方法(static修饰,类的静态方法),获取类的实例.单例设计模式分为饿汉和懒汉两种模式. 饿汉式&懒汉式 class Test33 { public static void main(String[] args) { Fanjianan.getInstance()

黑马程序员——多线程下的单例设计模式的安全问题

//多线程下的单例设计模式 class Sing { //饿汉式不存在安全问题,因为其不是线程同步的 private static Sing s = new Sing(); private Sing(){} public static Sing getInstance() { return s; } } class Single { private static Single s = null; private Single(){} public static Single getInstanc

黑马程序员——Java基础---单例

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流!                                         单例 设计模式:解决问题最行之有效的方法,让问题简单化,Java中有23种. 单例:解决一个类在内存,只有一个对象 想要保证对象唯一: 1,为了避免其他程序过多建立该类对象,

黑马程序员_java多线程 单例设计

------- <a href="http://www.itheima.com" target="blank">android培训</a>.<a href="http://www.itheima.com" target="blank">java培训</a>.期待与您交流! ---------- 一.线程的方法 1.yield让出cpu 2.setPriority()设置线程的优先

黑马程序员———基础视频中涉及的几个设计模式

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- package o_oriented; /* 设计模式: 解决某一问题最行之有效的方法.java中有23种设计模式. 单例设计模式: 解决一个类在内存只存在一个对象. 思路: 1.为了避免其他程序过多的建立该类对象,先禁止其他程序访问该类