Java 25天基础-DAY 06-面向对象-单例模式

简介: Java 25天基础-DAY 06-面向对象-单例模式

/*
设计模式:解决某一类问题最行之有效的方法
Java中23种设计模式:

单例设计模式:解决一个类在内存中值存在一个对象

想要保证对象唯一
1、为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象
2、为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象。
3、为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。

这三步怎么用代码体现呢?
1、将构造函数私有化
2、在类中创键一个本类对象
3、给创建的对象提供一个访问该对象的方式

对于事物该怎么描述还怎么描述,当需要将该事物的对象保证在内存中唯一时,将以上的三步加上即可。
*/

class Single
{

private int num;
public void setNum (int num)
{
    this.num = num;
}
public int getNum()
{
    return num;
}
private Single(){}
private static Single s = new Single();
//因为s变量不需要外部直接访问,所以私有化,因为下面的静态函数需要调用该对象,所以也将其静态。
public static Single getInstance()
//因为不能创建对象,需要使用类名访问,所以使用静态函数。
{
    return s;
}

}
class SingleDemo
{

public static void main(String[] args) 
{
    Single s1 = Single.getInstance();
    Single s2 = Single.getInstance();
    s1.setNum(32);
        
    
    System.out.println(s2.getNum());
    //s2的值和s1的值相同证明调用的是同一个对象。
}

}

/*
class Single
{

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

}

饿汉式:
对象先初始化。

*/

class Single
{

private static Single s = null;
private Single(){}
public static Single getInstance()
{
    if (s==null)
    {
        s= new Single();
        return s;
    }
}
//懒汉式,对象被调用时才初始化。也叫做延时加载。

}
//定义单类时使用饿汉式
class 单例模式
{

public static void main(String[] args) 
{
    System.out.println("Hello World!");
}

}

class Single
{

private static Single s = null;
private Single(){}
public static synchronized Single getInstance()
{
    if (s==null)
    {
        -->A
        s= new Single();
        return s;
    }
}

}//加入synchronized后会造成程序低效,因为当B遇到synchronized就不会进入。

目录
相关文章
|
2月前
|
设计模式 安全 Java
Java编程中的单例模式深入剖析
【10月更文挑战第21天】在Java的世界里,单例模式是设计模式中一个常见而又强大的存在。它确保了一个类只有一个实例,并提供一个全局访问点。本文将深入探讨如何正确实现单例模式,包括常见的实现方式、优缺点分析以及最佳实践,同时也会通过实际代码示例来加深理解。无论你是Java新手还是资深开发者,这篇文章都将为你提供宝贵的见解和技巧。
105 65
|
21天前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
21 1
|
1月前
|
设计模式 Java 数据库连接
Java编程中的设计模式:单例模式的深度剖析
【10月更文挑战第41天】本文深入探讨了Java中广泛使用的单例设计模式,旨在通过简明扼要的语言和实际示例,帮助读者理解其核心原理和应用。文章将介绍单例模式的重要性、实现方式以及在实际应用中如何优雅地处理多线程问题。
38 4
|
1月前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
24 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
1月前
|
设计模式 安全 Java
Java编程中的单例模式:理解与实践
【10月更文挑战第31天】在Java的世界里,单例模式是一种优雅的解决方案,它确保一个类只有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的实现方式、使用场景及其优缺点,同时提供代码示例以加深理解。无论你是Java新手还是有经验的开发者,掌握单例模式都将是你技能库中的宝贵财富。
49 2
|
1月前
|
设计模式 安全 Java
Java编程中的单例模式深入解析
【10月更文挑战第31天】在编程世界中,设计模式就像是建筑中的蓝图,它们定义了解决常见问题的最佳实践。本文将通过浅显易懂的语言带你深入了解Java中广泛应用的单例模式,并展示如何实现它。
|
2月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
91 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
1月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
38 2
|
3月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
3月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射