java 单利模式设计原理,推荐饿汉式

单例模式的设计:

 1 /*
 2 这个是先初始化对象。
 3 称为:饿汉式。
 4
 5 Single类一进内存,就已经创建好了对象。
 6 class Single
 7 {
 8     private static Single s = new Single();
 9     private Single(){}
10     public static Single getInstance()
11     {
12         return s;
13     }
14 }
15 */
16
17 //对象是方法被调用时,才初始化,也叫做对象的延时加载。成为:懒汉式。
18 //Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象。
19 class Single
20 {
21     private static Single s = null;
22     private Single(){}
23     public static Single getInstance()
24     {
25         if(s==null)
26         {
27             synchronized(Single.class)
28             {
29                 if(s==null)
30                     s = new Single();
31             }
32         }
33         return s;
34     }
35 }
36
37 //记录原则:定义单例,建议使用饿汉式。
38
39 class
40 {
41     public static void main(String[] args)
42     {
43         System.out.println("Hello World!");
44     }
45 }

  饿汉式

 1 /*
 2 设计模式:解决某一类问题最行之有效的方法。
 3 java中23种设计模式:
 4 单例设计模式:解决一个类在内存只存在一个对象。
 5
 6
 7 想要保证对象唯一。
 8 1,为了避免其他程序过多建立该类对象。先禁止其他程序建立该类对象
 9 2,还为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象。
10 3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
11
12 这三部怎么用代码体现呢?
13 1,将构造函数私有化。
14 2,在类中创建一个本类对象。
15 3,提供一个方法可以获取到该对象。
16
17
18
19 对于事物该怎么描述,还怎么描述。
20 当需要将该事物的对象保证在内存中唯一时,就将以上的三步加上即可。
21
22
23 */
24
25 class Single
26 {
27
28
29     private  Single(){}
30
31     private static Single s = new Single();
32
33     public static  Single getInstance()
34     {
35         return s;
36     }
37 }
38
39
40 class SingleDemo
41 {
42     public static void main(String[] args)
43     {
44         Single s1 = Single.getInstance();
45         Single s2 = Single.getInstance();
46
47         s1.setNum(23);
48
49         System.out.println(s2.getNum());
50
51
52
53 //        Single s1 = new Single();
54 //        Single s2= new Single();
55 //        s1.setNum(30);
56 //        System.out.println(s2.getNum());
57
58 //        Student s1 = new Student();
59 //        s1.setAge(30);
60 //
61 //        Student s2 = new Student();
62 //        s2.setAge(12);
63
64         Student s1 = Student.getStudent();
65         Student s2 = Student.getStudent();
66
67
68
69
70     }
71 }
72
73
74
75 class Student
76 {
77     private int age;
78
79
80     private static Student s = new Student();
81     private Student(){}
82     public static Student getStudent()
83     {
84         return s;
85     }
86
87
88
89     public void setAge(int age)
90     {
91         this.age = age;
92     }
93     public int getAge()
94     {
95         return age;
96     }
97 }
时间: 2024-10-31 17:09:40

java 单利模式设计原理,推荐饿汉式的相关文章

java单利模式设计

java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例.饿汉式单例.登记式单例三种. Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点. 核心知识点如下: (1) 将采用单例设计模式的类的构造方法私有化(采用private修饰). (2) 在其内部产生该类的实例化对象,并将其封装成private static类型. (3) 定义一个静态方法返回该类的实例. /** * 方法一 * 单例模

iOS-单例模式(懒汉式和饿汉式)和GCD实现

// // HMMusicTool.h // 03-单例模式-Singleton(掌握) // // Created by apple on 14-9-16. // Copyright (c) 2014年 heima. All rights reserved. // 播放音乐 #import <Foundation/Foundation.h> @interface HMMusicTool : NSObject + (instancetype)sharedMusicTool; @end // /

单件模式详解:懒汉式与饿汉式

class Instance{} //懒汉式 class LSingle{ private static  Instance _instance = null; private LSingle(){} public static Instance getInstance(){ if(_instance==null){ synchronized(LSingle.class){ _instance = new Instance(); } } return _instance; } } //饿汉式 c

Java单例模式--------懒汉式和饿汉式

单件模式用途:单件模式属于工厂模式的特例,只是它不需要输入参数并且始终返回同一对象的引用.单件模式能够保证某一类型对象在系统中的唯一性,即某类在系统中只有一个实例.它的用途十分广泛,打个比方,我们开发了一个简单的留言板,用户的每一次留言都要将留言信息写入到数据库中,最直观的方法是没次写入都建立一个数据库的链接.这是个简单的方法,在不考虑并发的时候这也是个不错的选择.但实际上,一个网站是并发的,并且有可能是存在大量并发操作的.如果我们对每次写入都创建一个数据库连接,那么很容易的系统会出现瓶颈,系统

java 单利模式

首先何为单利模式: 单利模式即多次调用同一个对象的时候,只有一个实例(这里所谓的实例就是,假如创建了两个对象,它们的hashCode相同) 下面是相关代码: 1 创建一个对象Singleton类 package Singleton; public class Singleton { } 2 我们进行测试: package Singleton; public class SingletonTest { public static void main(String[] args) { Singlet

设计模式-单例模式(饿汉式及懒汉式的Java实现)

单例模式 单例模式在程序设计中使用的频率非常之高,其设计的目的是为了在程序中提供唯一一个对象(保证只被构造一次),例如写入日志的log对象,windows的任务管理器实现(只能打开一个).这里主要介绍单例模式使用Java的实现(包括饿汉式及懒汉式). 实现 这里使用Log类作为例子,Log对象需要在程序中只有一个对象且只初始化一次. 饿汉式 饿汉式的单例模式理解起来是比较容易的,就是在单例类加载的时候就初始化需要单例的对象.实现也比较容易. public class Singleton{ pri

java软件设计模式——单例设计模式中的【饿汉式】与 【懒汉式】示例

以下为单例设计模式中的两种经典模式的代码示意: 1 单例设计模式(spring框架IOC,默认创建的对象都是单例的): 2 饿汉式: 3 public class SingleClass { 4 private SingleClass(){} //私有化构造方法 不能new对象 5 private static final SingleClass s=new SingleClass(); 6 //返回本类对象 7 public static SingleClass getInstance(){

单例模式的简单描述(饿汉式,饱汉式,双重锁模式)

一.什么时候使用单例模式: 当实例存在多个会引起程序逻辑错误的时候 二.好处: 1.减少内存的占用 2.单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例. 3.因为类控制了实例化过程,所以类可以灵活更改实例化过程 三.缺点: 1.开销 虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销.可以通过使用静态初始化解决此问题. 2.可能的开发混淆 使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对

黑马程序员-Java基础-面向对象-类和对象、封装、构造函数、this、static、饿汉式&amp;懒汉式

第一讲  面向对象概念 1.  定义 相对于与面向过程而言的,将功能封装进对象,我们只关心具备了该功能的对象,而不用关注对象的具体细节. 面向对象的特点:使复杂问题简单化.我们只关心什么对象能处理什么事情,而不用关心具体的实现细节. 2.  面向对象特征 封装.继承.多态. 第二讲  类和对象的关系 1.  概述 类就是:对现实生活中事物的描述,可以是实体的事物也可以是一件事等: 对象是:是某类事物的实例,实实在在存在的个体: 映射到java中,描述就是class定义的类. 具体对象就是对应ja