网站首页 > 技术文章 正文
概述
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,也是最常用的设计模式,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。通常依据不同的编程语言,还会细分为“饿汉式单例”和“懒汉式单例”。“饿汉式单例”也就是在静态初始化类的时候,便完成自身的实例化。“懒汉式单例”要在第一个被访问时,才将自己实例化。在ABAP语言中,也有着类似的概念,在实例代码中给出了相关的例子。
应用实例
1.一个会话进程里面只有一个对象,避免多余的内存开销。
2.Windows 是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行。
3、一些设备管理器常常设计为单例模式,比如一个电脑有两台打印机,在输出的时候就要处理不能两台打印机打印同一个文件。
优点
1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。
2、避免对资源的多重占用(比如写文件操作)。
缺点
没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。
使用场景
1.要求生产唯一序列号。
2.WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。
3.创建一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。
实现
1. 创建一个Single 类
CLASS cl_single_object DEFINITION.
PUBLIC SECTION.
"!用于获得实例化的对象
CLASS-METHODS get_instance
RETURNING VALUE(ro_instance) TYPE REF TO cl_single_object.
"!打印消息
METHODS show_message.
PRIVATE SECTION.
CLASS-DATA:go_instance TYPE REF TO cl_single_object.
ENDCLASS.
CLASS cl_single_object IMPLEMENTATION.
METHOD show_message.
WRITE:/ 'Hello World'.
ENDMETHOD.
METHOD get_instance.
IF go_instance IS INITIAL.
go_instance = NEW cl_single_object( ).
ENDIF.
ro_instance = go_instance.
ENDMETHOD.
ENDCLASS.
2.验证,调用实例的方法。
CLASS cl_application DEFINITION.
PUBLIC SECTION.
CLASS-METHODS: run .
ENDCLASS.
CLASS cl_application IMPLEMENTATION.
METHOD run.
DATA(lo_object) = cl_single_object=>get_instance( ).
lo_object->show_message( ).
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
cl_application=>run( ).
对应的UML:
结果:
猜你喜欢
- 2024-10-24 什么是面向对象编程? 什么是面向对象编程?它与面向过程编程有什么区别
- 2024-10-24 系统建设的脊柱:表对象建模 建立表对象的表间关系
- 2024-10-24 Python基础-Python面向对象编程 python面向对象的基本概念
- 2024-10-24 几种常用关系型数据库介绍 关系型数据库大全
- 2024-10-24 如何理解python中面向对象里面的单例模式?
- 2024-10-24 如何通俗易懂理解Python类和面向对象?
- 2024-10-24 盛齐讲软考系规:什么是面向对象的基本概念
- 2024-10-24 学习笔记——面向对象(类与对象) 面向对象的类和对象
- 2024-10-24 面向对象方式编写前端页面(1) web面向对象
- 2024-10-24 「高项笔记」 面向对象分析 面向对象分析总结
你 发表评论:
欢迎- 最近发表
-
- 吴谨言专访大反转!痛批耍大牌后竟翻红,六公主七连发力显真诚
- 港股2月28日物业股涨幅榜:CHINAOVSPPT涨1.72%位居首位
- 港股2月28日物业股午盘:CHINAOVSPPT涨1.72%位居首位
- 港股3月2日物业股涨幅榜:CHINAOVSPPT涨1.03%位居首位
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%
- 天赋与心痛的背后:邓鸣贺成长悲剧引发的深刻反思
- 冯小刚女儿徐朵追星范丞丞 同框合照曝光惹人羡,回应网友尽显亲民
- “资本大佬”王冉:51岁娶小17岁童瑶,并承诺余生为娇妻保驾护航
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%位居首位
- 「IT之家开箱」vivo S15 图赏:双镜云窗,盛夏风光
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)