您现在的位置是:首页 > 编程 > 

单例模式在图书管理系统中的简单应用

2025-07-25 22:50:49
单例模式在图书管理系统中的简单应用 单例模式在图书管理系统中的简单应用​本文讲解,设计模式中最简单的单例模式在,图书管理系统中的简单应用。 对于静态同步方法可以查看这篇文章:Java中的静态同步方法单例模式简介当你在开发Spring Boot项目时,可以使用单例模式来优化代码。下面是几个如何在Spring Boot中实现单例模式的示例。1. 饿汉式单例模式饿汉式单例模式指在程序启动时就创建一个静态

单例模式在图书管理系统中的简单应用

单例模式在图书管理系统中的简单应用

本文讲解,设计模式中最简单的单例模式在,图书管理系统中的简单应用。

对于静态同步方法可以查看这篇文章:Java中的静态同步方法

单例模式简介

当你在开发Spring Boot项目时,可以使用单例模式来优化代码。下面是几个如何在Spring Boot中实现单例模式的示例。

1. 饿汉式单例模式

饿汉式单例模式指在程序启动时就创建一个静态对象,并将其作为单例实例使用。这种方式简单直接,但存在一定的内存浪费。

代码语言:javascript代码运行次数:0运行复制
@Component
public class SingletonClass {
    private static final SingletonClass instance = new SingletonClass();
    
    private SingletonClass() { }
    
    public SingletonClass getInstance() {
        return instance;
    }
}
2. 懒汉式单例模式

懒汉式单例模式指在第一次请求对象时再创建对象,避免了内存浪费,但需要使用同步锁解决线程安全问题。

代码语言:javascript代码运行次数:0运行复制
@Component
public class SingletonClass {
    private static SingletonClass instance;
    
    private SingletonClass() { }
    
    public synchronized SingletonClass getInstance() {
        if (instance == null) {
            instance = new SingletonClass();
        }
        return instance;
    }
}
. 枚举类型单例模式

枚举类型单例模式是一种方便、高效、线程安全的单例模式实现方式,在Java 5之后才支持。

代码语言:javascript代码运行次数:0运行复制
@Component
public enum SingletonClass {
    ISTACE;
    
    public void doSomething() {
        // TODO: Implementation goes here...
    }
}

具体案例

数据库
代码语言:javascript代码运行次数:0运行复制
-- ----------------------------
-- Table structure for book
-- ----------------------------
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book`  (
  `isbn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci OT ULL,
  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci OT ULL,
  `author` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci OT ULL,
  `publisher` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci OT ULL,
  `pubdate` datetime OT ULL,
  `price` decimal(10, 2) OT ULL,
  `id` int OT ULL AUTO_ICREMET,
  PRIMARY KEY (`id`, `isbn`) USIG BTREE
) EGIE = InnoDB AUTO_ICREMET = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYAMIC;

-- ----------------------------
-- Records of book
-- ----------------------------
ISERT ITO `book` VALUES ('978049227148', 'The Call of the Wild', 'Jack London', 'Scholastic Press', '2001-01-01 00:00:00', 9.40, 1);
ISERT ITO `book` VALUES ('9787501592401', 'The Old Man and the Sea', 'Ernest Hemingway', 'Knowledge Press', '202-01-0 00:00:00', 25.80, 2);
ISERT ITO `book` VALUES ('9787501592401', 'The Old Man and the Sea', 'Ernest Hemingway', 'Knowledge Press', '202-01-1 1:02:42', 25.80, );
ISERT ITO `book` VALUES ('978049227148', 'The Call of the Wild', 'Jack London', 'Scholastic Press', '202-01-0 16:00:00', 4.90, 6);
ISERT ITO `book` VALUES ('9781772262902', 'Oliver Twist', 'Charles Dickens', 'Engage Books', '202-01-0 16:00:00', 45.00, 7);
具体代码

下面代码演示单例模式在图书管理系统中的应用。

代码语言:javascript代码运行次数:0运行复制
@Service
public class BookServiceImpl extends ServiceImpl<BookMapper, Book> implements BookService {
    
    // 单例模式
    private static BookServiceImpl instance;
    
    // 私有空参构造方法
    private BookServiceImpl() { }
    
    // 静态同步方法,确保线程安全同时实现懒汉式单例
    public synchronized static BookServiceImpl getInstance() {
        if (instance == null) {
            instance = new BookServiceImpl();
        }
        return instance;
    }
      
    @Override
    public List<Book> listAll() {
        // 调用基类提供的list()方法获取所有书籍列表
        return this.list();
    }

}

在这里,我们使用了懒汉式单例模式来确保只有一个BookServiceImpl对象存在。这通过在类上定义一个static变量instance、设定私有的空参构造函数和实现getInstance()方法来实现。

当第一次调用getInstance()方法时,会检查static变量instance是否为空。如果为空,就创建一个新的BookServiceImpl对象,并将其赋给instance,然后返回这个新创建的对象。如果不为空,直接返回已有的对象,从而实现单例模式。在多线程情况下,通过添加synchronized关键字,可以确保getInstance()方法的线程安全性。

在本例中,我们对服务实现层进行优化,使其每次访问数据库时只需要使用同一个对象,避免了多次创建和销毁对象的开销。

除了使用单例模式,我们还继承了Mybatis Plus提供的IService接口,这使得服务层实现能够快速地进行数据访问和管理。例如,在本例中,我们可以通过调用基类中提供的list()方法轻松地获取数据库中所有书籍的列表。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-20,如有侵权请联系 cloudcommunity@tencent 删除数据库单例模式对象同步线程安全

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1147874.html

相关标签:无
上传时间: 2025-07-19 17:11:14
留言与评论(共有 19 条评论)
本站网友 qq788
14分钟前 发表
00'
本站网友 海湾石油
11分钟前 发表
'202-01-0 16
本站网友 克拉玛依油城信息港
2分钟前 发表
00
本站网友 苏州科文中心电影院
16分钟前 发表
`pubdate` datetime OT ULL
本站网友 暴雪中国
29分钟前 发表
2) OT ULL
本站网友 膨鱼鳃
10分钟前 发表
对于静态同步方法可以查看这篇文章:Java中的静态同步方法单例模式简介当你在开发Spring Boot项目时
本站网友 非凡网原型
1分钟前 发表
但需要使用同步锁解决线程安全问题
本站网友 足底反射区图
9分钟前 发表
我们对服务实现层进行优化
本站网友 四平市职业大学
5分钟前 发表
在本例中
本站网友 迷你忍者没声音
0秒前 发表
通过添加synchronized关键字
本站网友 如何提高记忆
29分钟前 发表
原始发表:2025-01-20
本站网友 石牌租房
19分钟前 发表
下面是几个如何在Spring Boot中实现单例模式的示例
本站网友 夫妻之间如何相处
25分钟前 发表
00
本站网友 川菜店
4分钟前 发表
PRIMARY KEY (`id`
本站网友 宫颈腺癌
2分钟前 发表
如有侵权请联系 cloudcommunity@tencent 删除前往查看数据库单例模式对象同步线程安全
本站网友 杨红宣
26分钟前 发表
使其每次访问数据库时只需要使用同一个对象
本站网友 中国凯利实业有限公司
14分钟前 发表
Implementation goes here... } }具体案例数据库代码语言:javascript代码运行次数:0运行复制-- ---------------------------- -- Table structure for book -- ---------------------------- DROP TABLE IF EXISTS `book`; CREATE TABLE `book` ( `isbn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci OT ULL
本站网友 下载速度测试
7分钟前 发表
PRIMARY KEY (`id`