大家好,欢迎来到IT知识分享网。
概述
单例模式(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:
结果:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/108840.html