Java面向对象-单例(Singleton)设计模式
2021/6/30 20:24:49
本文主要是介绍Java面向对象-单例(Singleton)设计模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
单例模式参考文档:https://www.runoob.com/design-pattern/singleton-pattern.html
单例模式是static的应用场景,指:一个类只能产生一个实例
单例模式的应用场景:工具类一般都是单例模式
引申:什么是实例:https://blog.csdn.net/qq_43663024/article/details/103937611
单例设计模式的实现方式:
创建一个类,满足以下条件:
构造器私有(private);用一个私有(private)、静态(static) 的变量引用实例;提供一个共有 (public)、静态(static) 的方法获得实例
代码:
类的定义:
public class TestSingleton { //提供一个私有的、静态的变量引用实例,(引用变量为 私有、静态的) private static TestSingleton testSingleton; protected int aa =10; public String name = "zxc"; private String tag = "222"; //构造器私有 private TestSingleton(){ System.out.println("私有构造器"); } //提供一个公有、静态方法获得实例 public static TestSingleton getTestSingleton(){ if (testSingleton ==null){ testSingleton = new TestSingleton(); } return testSingleton; } }
实例化:
public class InitialSingletonTest { public static void main(String[] args) { // 不能通过这种强引用的方法新建实例,因为构造器方法是private的 // TestSingleton testSingleton = new TestSingleton(); TestSingleton t1= TestSingleton.getTestSingleton(); // 一个类只能创建一个实例 TestSingleton t2= TestSingleton.getTestSingleton(); // t1 和 t2 其实是一个实例 System.out.println(t1==t2); // name是public的,可以在任何地方访问 t1.name="dd"; // aa是protected的,可以在包中访问 t1.aa= 2; // tag是private的,只能在类中访问,否则会报错 // t1.tag="222"; System.out.println(t2.aa); } }
这篇关于Java面向对象-单例(Singleton)设计模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南
- 2024-09-26Springboot微服务资料入门教程