单例模式在图书管理系统中的简单应用
单例模式在图书管理系统中的简单应用
本文讲解,设计模式中最简单的单例模式在,图书管理系统中的简单应用。
对于静态同步方法可以查看这篇文章: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组装电脑配置单推荐报价格
推荐阅读
留言与评论(共有 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` |