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就不会进入。

目录
相关文章
|
3月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
157 1
|
3月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
137 0
|
4月前
|
安全 Java 编译器
Java面向对象
本文深入讲解了Java面向对象编程(OOP)的四大特性:封装、继承、多态与抽象,以及方法的设计与使用。通过示例展示了如何用类和对象组织代码,提升程序的可维护性与扩展性。
|
5月前
|
存储 Java 测试技术
Java基础 - 面向对象
面向对象编程是Java的核心,包含封装、继承、多态三大特性。封装隐藏实现细节,提升代码可维护性与安全性;继承实现类间IS-A关系,支持代码复用;多态通过继承、重写与向上转型,实现运行时方法动态绑定,提升系统扩展性与灵活性。
|
7月前
|
人工智能 Java 编译器
Java:面向对象
本文介绍了Java编程中的核心概念,包括包的命名规范与自动导入机制、构造方法的特点与使用、`this`和`super`关键字的作用、继承的基本规则、访问权限的设置、封装的意义、多态的实现原理以及`static`关键字的用法。通过详细解析每个知识点,并结合代码示例,帮助读者深入理解Java面向对象编程的核心思想与实践技巧。内容适合初学者及进阶开发者学习参考。
178 0
|
9月前
|
缓存 安全 Java
java面试-基础语法与面向对象
本文介绍了 Java 编程中的几个核心概念。首先,详细区分了方法重载与重写的定义、发生阶段及规则;其次,分析了 `==` 与 `equals` 的区别,强调了基本类型和引用类型的比较方式;接着,对比了 `String`、`StringBuilder` 和 `StringBuffer` 的特性,包括线程安全性和性能差异;最后,讲解了 Java 异常机制,包括自定义异常的实现以及常见非检查异常的类型。这些内容对理解 Java 面向对象编程和实际开发问题解决具有重要意义。
|
设计模式 安全 Java
Java编程中的单例模式深入剖析
【10月更文挑战第21天】在Java的世界里,单例模式是设计模式中一个常见而又强大的存在。它确保了一个类只有一个实例,并提供一个全局访问点。本文将深入探讨如何正确实现单例模式,包括常见的实现方式、优缺点分析以及最佳实践,同时也会通过实际代码示例来加深理解。无论你是Java新手还是资深开发者,这篇文章都将为你提供宝贵的见解和技巧。
216 65
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
131 1
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
387 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
设计模式 Java 数据库连接
Java编程中的设计模式:单例模式的深度剖析
【10月更文挑战第41天】本文深入探讨了Java中广泛使用的单例设计模式,旨在通过简明扼要的语言和实际示例,帮助读者理解其核心原理和应用。文章将介绍单例模式的重要性、实现方式以及在实际应用中如何优雅地处理多线程问题。
205 4