`
勒布朗
  • 浏览: 71319 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

单例模式两种写法

阅读更多

单例模式  懒汉式单例

package com.b;

/**
*
* 单例模式  懒汉式单例
* 类的实例在第一次被访问时才创建
*
* @author zhangli
* **/

public class SingletonTest1 {


//构造器私有,避免外部创建实例
private SingletonTest1(){}

private static SingletonTest1 classInstance = null;

//静态工厂方法,没有对象的实例时创建对象
public synchronized static SingletonTest1 getInstance(){
if(classInstance == null){
classInstance = new SingletonTest1();
}
return classInstance;
}

//test
public static void  main(String[] args){
SingletonTest1 classInstance1  = SingletonTest1.getInstance();
SingletonTest1 classInstance2  = SingletonTest1.getInstance();
System.out.println(classInstance1.hashCode());
System.out.println(classInstance2.hashCode());
System.out.println(classInstance1.equals(classInstance2));
}
}


单例模式的 饿汉模式

package com.b;

/**
* 单例模式的 饿汉模式 
* 在类被加载时类的唯一实例就被创建了
* @author zhangli
* */
public class SingletonTest2 {


//类被加载时,实例就被创建
private static final SingletonTest2 classInstance = new SingletonTest2();

private SingletonTest2(){}

public static synchronized SingletonTest2 getInstance(){
return classInstance;
}


//test
public static void main(String[] args){

SingletonTest2 classInstace1 = SingletonTest2.getInstance();
SingletonTest2 classInstace2 = SingletonTest2.getInstance();

System.out.println(classInstace1.hashCode());
System.out.println(classInstace2.hashCode());


}

}

 

分享到:
评论

相关推荐

    IOS 中两种单例模式的写法实例详解

    以下是这两种写法的详细解释: ### 1. 不使用GCD的单例模式 ```objc // ServiceManager.h #import @interface ServiceManager : NSObject + (instancetype)defaultManager; @end ``` ```objc // ...

    objective-c单例模式的完整书写方式

    Objective-C中的单例模式是一种设计模式,用于在整个应用程序中确保只有一个特定类的实例存在,并提供一个全局访问点来获取这个实例。单例模式在iOS开发中广泛应用,特别是在管理共享资源、配置设置或网络请求等场景...

    c# 单例模式的实现方法

    c# 中实现单例模式有多种方法,本文将详细介绍饿汉式和懒汉式两种实现方法。 饿汉式 饿汉式是最简单的单例模式实现方法,在静态构造函数中立即实例化。下面是一个典型的饿汉式单例模式实现代码: ```csharp public...

    PHP里的单例类写法实例

    在PHP开发中,单例模式是一种常见的设计模式,它确保一个类只有一个实例,并提供一个全局访问点。单例模式主要用于控制资源的使用,比如数据库连接、日志记录器等。本文通过实例展示了PHP中的单例类写法。 单例模式...

    iOS App开发中使用设计模式中的单例模式的实例解析

    二、单例模式的两种写法 1,常用写法 #import LGManagerCenter.h static LGManagerCenter *managerCenter; @implementation LGManagerCenter +(LGManagerCenter *)sharedManager{ if(!managerC

    C#中的五种单例模式(SIngleton)

    1. 写法一(只适用于单线程环境) public sealed class Singleton1 { private Singleton1(){} private static Singleton1 instance = null; public static Singleton1 Instance ...若两个线程同时判读instan

    java设计模式

    3.3 依赖的三种写法 3.4 最佳实践 第4章 接口隔离原则 4.1 接口隔离原则的定义 4.2 美女何其多,观点各不同 4.3 保证接口的纯洁性 4.4 最佳实践 第5章 迪米特法则 5.1 迪米特法则的定义 5.2 我的知识你知道得越少越...

    C#设计模式.rar

    实现C#中的单例模式通常有两种方法:懒汉式(线程不安全)和饿汉式(线程安全)。更安全的实现方式是使用`Lazy<T>`类或`双重检查锁定`机制。 2. **简单工厂模式**:简单工厂模式是一种静态工厂方法,用于创建对象,...

    春招&秋招面经

    进程与线程是操作系统中两种重要的抽象概念,它们各自适用于不同的场景。理解两者的区别对于设计高效、可靠的软件系统至关重要。单例模式作为设计模式的一种,同样需要根据实际需求选择最合适的实现方式,以确保系统...

    SSH项目实例,有不同写法模板

    这些模板展示了不同的设计模式和最佳实践,例如单例模式、工厂模式在服务层的运用,以及贫血模型和富模型两种不同的业务对象设计。 开发者可以通过研究这些模板,学习如何配置SSH框架,理解它们之间的协作方式,...

    设计模式再谈

    - **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。 - **工厂方法模式**:定义一个创建对象的接口,让子类决定实例化哪一个类。 - **抽象工厂模式**:提供一个创建一系列相关或相互依赖对象的接口,而...

    gradleTest:gradleTest

    单例模式有八种写法java.lang.Runtime单例工具类对象,平凡访问数据库或文件对象 原型模式创建一摸一样对象,使用clone spring多例bean创建。 org.springframework.beans.factory.support.AbstractBeanFactory#...

    java编码规范——关于java的命名规则、注视的写法等

    ##### 7.2 单例模式 确保一个类只有一个实例,并提供一个全局访问点。 ##### 7.3 适配器模式 允许不兼容的接口之间的类可以一起工作。 ##### 7.4 组合模式 将对象组合成树形结构以表示“部分-整体”的层次结构...

    面经-易贝一面1

    首先,设计模式中的单例模式是一种常见的创建型模式,它的主要作用是保证一个类只有一个实例,并提供全局访问点。面试中提及了单例的写法,通常有懒汉式、饿汉式、双重检查锁定等实现方式,每种方式在多线程环境下的...

    天舟通信笔试题1

    - Java 提供了两种方式创建线程:继承 `Thread` 类或实现 `Runnable` 接口。继承 `Thread` 直接覆写 `run()` 方法,而实现 `Runnable` 需要将实例传递给 `Thread` 构造器,然后在创建的 `Thread` 对象上调用 `start...

    c#,.net 程序员常见面试题大全(含答案)

    - **查询表达式与方法语法**:熟悉两种不同的LINQ查询方式,以及如何在数据库、集合和其他数据源上执行查询。 - **Lambda表达式**:掌握这种简洁的匿名函数写法,以及在LINQ中的应用。 4. **异步编程**: - **...

    java 面试题2

    15. **设计模式:**常见的设计模式有单例模式、工厂模式、观察者模式等,用于解决软件设计中的常见问题。 16. **JavaScript数字验证:**可以使用正则表达式或其他函数如isNaN()进行数字类型的验证。 17. **CORBA:...

    leetcode中国-ToDoListRecords:待办事项列表记录

    两种写法 最大公共子序列 - dp[i] [j] 大疆测评 面经 2020.7.5 编程: 哈希链表 (LRU算法) 编程: 01背包 编程: 滑动窗口 编程: 子序列/子串问题 2020.7.4 英文自我介绍 家乡英文介绍 职业规划 通信行业的认识 公司的...

Global site tag (gtag.js) - Google Analytics