项目结构:

这是一套完整的Java单例模式实现代码,展示了珠宝企业全流程管理系统的设计。系统采用双重校验锁实现线程安全的单例模式,包含11个业务部门服务类(如原料采购、设计、生产等),通过JewelryWorkflowManager统一调度。
核心特点:
- 使用volatile+synchronized确保线程安全
- 抽象基类SingletonBase提供统一日志功能
- 支持两种执行模式:
- 串行流程:顺序执行各部门业务并格式化输出
- 高并发模式:使用线程池并行执行各部门业务
- 严格控制台输出编码(UTF-8)解决乱码问题
- 每个服务类都是独立单例,通过getInstance()获取
输出样例展示各部门业务流程,如"PROD⚒加工生产:镶嵌、抛光、铸造、成品制作"等带图标的格式化文本。
该设计实现了业务模块的高内聚、低耦合,既保证线程安全又兼顾执行效率。
java
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 20:30
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : AppLogger.java
* explain : 学习 类
**/
package SingletonPattern.infra.log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public final class AppLogger {
private AppLogger() {}
public static <T> Logger getLogger(Class<T> clazz) {
return LoggerFactory.getLogger(clazz);
}
}
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 20:29
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : SingletonBase.java
* explain : 学习 类
**/
package SingletonPattern.core;
import SingletonPattern.infra.log.AppLogger;
import org.slf4j.Logger;
public abstract class SingletonBase<T> {
protected final Logger logger;
protected SingletonBase() {
logger = AppLogger.getLogger(this.getClass());
logger.info("[{}] 线程安全单例初始化完成", this.getClass().getSimpleName());
}
}
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 20:30
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : IWorkflowManager.java
* explain : 学习 类
**/
package SingletonPattern.interfaces;
/**
* 流程调度接口
* */
public interface IWorkflowManager {
// 串行标准流程,输出分割线格式化文本
void startSerialStandardWorkflow();
// 多线程高并发执行
void startConcurrentHighSafeWorkflow();
}
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 20:30
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : IDepartmentService.java
* explain : 学习 类
**/
package SingletonPattern.interfaces.department;
/**
* 业务统一接口
* */
public interface IDepartmentService {
// 执行业务逻辑,输出日志
void executeBusiness();
// 串行控制台格式化打印(无emoji纯文本,不乱码)
void printConsole();
}
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 10:56
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : SingletonBll.java
* explain : 学习 类
**/
package BLL;
import SingletonPattern.core.workflow.JewelryWorkflowManager;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
// 单例模式
public class SingletonBll {
public void demo(){
// 强制控制台输出UTF8,解决Windows CMD中文乱码
System.setOut(new PrintStream(System.out, true, StandardCharsets.UTF_8));
JewelryWorkflowManager workflow = JewelryWorkflowManager.getInstance();
// 串行格式化输出(和你要求文本完全一致)
workflow.startSerialStandardWorkflow();
// 模拟高并发多线程执行
workflow.startConcurrentHighSafeWorkflow();
}
}
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 20:31
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : JewelryWorkflowManager.java
* explain : 学习 类
**/
package SingletonPattern.core.workflow;
import SingletonPattern.core.SingletonBase;
import SingletonPattern.interfaces.IWorkflowManager;
import SingletonPattern.interfaces.department.IDepartmentService;
import SingletonPattern.services.department.*;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public final class JewelryWorkflowManager extends SingletonBase<JewelryWorkflowManager> implements IWorkflowManager {
private static volatile JewelryWorkflowManager instance;
private final List<IDepartmentService> departments;
private JewelryWorkflowManager() {
departments = new ArrayList<>();
departments.add(MaterialPurchaseService.getInstance());
departments.add(DesignService.getInstance());
departments.add(ProductionService.getInstance());
departments.add(QualityCheckService.getInstance());
departments.add(PackagingService.getInstance());
departments.add(LogisticsService.getInstance());
departments.add(FinanceService.getInstance());
departments.add(MarketingService.getInstance());
departments.add(BusinessService.getInstance());
departments.add(HRService.getInstance());
departments.add(ITService.getInstance());
}
public static JewelryWorkflowManager getInstance() {
if (instance == null) {
synchronized (JewelryWorkflowManager.class) {
if (instance == null) instance = new JewelryWorkflowManager();
}
}
return instance;
}
/**
* 串行流程,输出固定分割线文本(和C#输出完全一致)
*/
@Override
public void startSerialStandardWorkflow() {
System.out.println("=============================================");
System.out.println(" 珠宝企业级全流程系统启动 (Java)");
System.out.println("=============================================\n");
for (IDepartmentService dept : departments) {
dept.executeBusiness();
dept.printConsole();
}
System.out.println("\n=============================================");
System.out.println(" 全流程执行完成!");
System.out.println("=============================================\n");
}
/**
* 多线程高并发安全执行
*/
@Override
public void startConcurrentHighSafeWorkflow() {
logger.info("===== 高并发多线程流程开始(双重锁volatile最高安全级别)=====");
ExecutorService pool = Executors.newFixedThreadPool(departments.size());
for (IDepartmentService dept : departments) {
pool.submit(dept::executeBusiness);
}
pool.shutdown();
try {
pool.awaitTermination(3, TimeUnit.SECONDS);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
logger.error("并发流程等待中断", e);
}
logger.info("===== 全部并发业务执行完毕 =====");
}
}
java
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 21:40
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : BusinessService.java
* explain : 学习 类
**/
package SingletonPattern.services.department;
import SingletonPattern.core.SingletonBase;
import SingletonPattern.interfaces.department.IDepartmentService;
public final class BusinessService extends SingletonBase<BusinessService> implements IDepartmentService {
private static volatile BusinessService instance;
private BusinessService() {}
public static BusinessService getInstance() {
if (instance == null) {
synchronized (BusinessService.class) {
if (instance == null) instance = new BusinessService();
}
}
return instance;
}
@Override
public void executeBusiness() {
logger.info("业务对接:客户咨询、订单签订、需求确认");
}
@Override
public void printConsole() {
System.out.println("[BIZ] \uD83E\uDD1D业务对接:客户咨询、订单签订、需求确认");
}
}
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 21:38
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : DesignService.java
* explain : 学习 类
**/
package SingletonPattern.services.department;
import SingletonPattern.core.SingletonBase;
import SingletonPattern.interfaces.department.IDepartmentService;
public final class DesignService extends SingletonBase<DesignService> implements IDepartmentService {
private static volatile DesignService instance;
private DesignService() {}
public static DesignService getInstance() {
if (instance == null) {
synchronized (DesignService.class) {
if (instance == null) instance = new DesignService();
}
}
return instance;
}
@Override
public void executeBusiness() {
logger.info("设计制图:3D建模、款式设计、工艺图纸输出");
}
@Override
public void printConsole() {
System.out.println("[DESIGN] \uD83C\uDFA8设计制图:3D建模、款式设计、工艺图纸输出");
}
}
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 21:40
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : FinanceService.java
* explain : 学习 类
**/
package SingletonPattern.services.department;
import SingletonPattern.core.SingletonBase;
import SingletonPattern.interfaces.department.IDepartmentService;
public final class FinanceService extends SingletonBase<FinanceService> implements IDepartmentService {
private static volatile FinanceService instance;
private FinanceService() {}
public static FinanceService getInstance() {
if (instance == null) {
synchronized (FinanceService.class) {
if (instance == null) instance = new FinanceService();
}
}
return instance;
}
@Override
public void executeBusiness() {
logger.info("财务:成本核算、营收记账、发票开具");
}
@Override
public void printConsole() {
System.out.println("[FIN] \uD83D\uDCB0 财务结算:成本核算、营收记账、发票开具");
}
}
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 21:40
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : HRService.java
* explain : 学习 类
* ⚒️、🔍、🎁、🚚、💰、📢、🤝、👥、💻
* ✅ → [OK]
* 📌 → [INFO]
* 🎨 → [DESIGN]
* ⚒️ → [PROD]
* 🔍 → [QC]
* 🎁 → [PACK]
* 🚚 → [LOG]
* 💰 → [FIN]
* 📢 → [MKT]
* 🤝 → [BIZ]
* 👥 → [HR]
* 💻 → [IT]
**/
package SingletonPattern.services.department;
import SingletonPattern.core.SingletonBase;
import SingletonPattern.interfaces.department.IDepartmentService;
public final class HRService extends SingletonBase<HRService> implements IDepartmentService {
private static volatile HRService instance;
private HRService() {}
public static HRService getInstance() {
if (instance == null) {
synchronized (HRService.class) {
if (instance == null) instance = new HRService();
}
}
return instance;
}
@Override
public void executeBusiness() {
logger.info("人事行政:员工管理、考勤、办公支持");
}
@Override
public void printConsole() {
System.out.println("[HR]\uD83D\uDC65 人事行政:员工管理、考勤、办公支持");
}
}
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 21:41
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : ITService.java
* explain : 学习 类
**/
package SingletonPattern.services.department;
import SingletonPattern.core.SingletonBase;
import SingletonPattern.interfaces.department.IDepartmentService;
public final class ITService extends SingletonBase<ITService> implements IDepartmentService {
private static volatile ITService instance;
private ITService() {}
public static ITService getInstance() {
if (instance == null) {
synchronized (ITService.class) {
if (instance == null) instance = new ITService();
}
}
return instance;
}
@Override
public void executeBusiness() {
logger.info("IT运维:系统维护、数据安全、软件支持");
}
@Override
public void printConsole() {
System.out.println("[IT]\uD83D\uDCBB IT运维:系统维护、数据安全、软件支持");
}
}
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 21:40
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : LogisticsService.java
* explain : 学习 类
**/
package SingletonPattern.services.department;
import SingletonPattern.core.SingletonBase;
import SingletonPattern.interfaces.department.IDepartmentService;
public final class LogisticsService extends SingletonBase<LogisticsService> implements IDepartmentService {
private static volatile LogisticsService instance;
private LogisticsService() {}
public static LogisticsService getInstance() {
if (instance == null) {
synchronized (LogisticsService.class) {
if (instance == null) instance = new LogisticsService();
}
}
return instance;
}
@Override
public void executeBusiness() {
logger.info("物流:保价发货、轨迹追踪、客户配送");
}
@Override
public void printConsole() {
System.out.println("[LOG]\uD83D\uDE9A 物流配送:保价发货、轨迹追踪、客户配送");
}
}
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 21:40
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : MarketingService.java
* explain : 学习 类
**/
package SingletonPattern.services.department;
import SingletonPattern.core.SingletonBase;
import SingletonPattern.interfaces.department.IDepartmentService;
public final class MarketingService extends SingletonBase<MarketingService> implements IDepartmentService {
private static volatile MarketingService instance;
private MarketingService() {}
public static MarketingService getInstance() {
if (instance == null) {
synchronized (MarketingService.class) {
if (instance == null) instance = new MarketingService();
}
}
return instance;
}
@Override
public void executeBusiness() {
logger.info("营销推广:线上广告、门店活动、品牌宣传");
}
@Override
public void printConsole() {
System.out.println("[MKT]\uD83D\uDCE2 营销推广:线上广告、门店活动、品牌宣传");
}
}
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 20:31
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : MaterialPurchaseService.java
* explain : 学习 类
**/
package SingletonPattern.services.department;
import SingletonPattern.core.SingletonBase;
import SingletonPattern.interfaces.department.IDepartmentService;
public final class MaterialPurchaseService extends SingletonBase<MaterialPurchaseService> implements IDepartmentService {
// volatile 禁止指令重排,并发安全
private static volatile MaterialPurchaseService instance;
// 私有构造,禁止外部new
private MaterialPurchaseService() {}
// 全局唯一访问入口
public static MaterialPurchaseService getInstance() {
if (instance == null) {
synchronized (MaterialPurchaseService.class) {
if (instance == null) {
instance = new MaterialPurchaseService();
}
}
}
return instance;
}
@Override
public void executeBusiness() {
logger.info("原料采购:钻石/金料纯度检测、证书核验、入库登记");
}
@Override
public void printConsole() {
System.out.println("[OK] ✅ 原料采购核验:钻石/金料纯度检测、证书核验、入库登记");
}
}
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 21:39
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : PackagingService.java
* explain : 学习 类
**/
package SingletonPattern.services.department;
import SingletonPattern.core.SingletonBase;
import SingletonPattern.interfaces.department.IDepartmentService;
public final class PackagingService extends SingletonBase<PackagingService> implements IDepartmentService {
private static volatile PackagingService instance;
private PackagingService() {}
public static PackagingService getInstance() {
if (instance == null) {
synchronized (PackagingService.class) {
if (instance == null) instance = new PackagingService();
}
}
return instance;
}
@Override
public void executeBusiness() {
logger.info("包装:礼盒包装、防伪标签、证书封装");
}
@Override
public void printConsole() {
System.out.println("[PACK] \uD83D\uDD0D成品包装:礼盒包装、防伪标签、证书封装");
}
}
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 21:39
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : ProductionService.java
* explain : 学习 类
**/
package SingletonPattern.services.department;
import SingletonPattern.core.SingletonBase;
import SingletonPattern.interfaces.department.IDepartmentService;
public final class ProductionService extends SingletonBase<ProductionService> implements IDepartmentService {
private static volatile ProductionService instance;
private ProductionService() {}
public static ProductionService getInstance() {
if (instance == null) {
synchronized (ProductionService.class) {
if (instance == null) instance = new ProductionService();
}
}
return instance;
}
@Override
public void executeBusiness() {
logger.info("加工生产:镶嵌、抛光、铸造、成品制作");
}
@Override
public void printConsole() {
System.out.println("[PROD] ⚒\uFE0F加工生产:镶嵌、抛光、铸造、成品制作");
}
}
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 21:39
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : QualityCheckService.java
* explain : 学习 类
**/
package SingletonPattern.services.department;
import SingletonPattern.core.SingletonBase;
import SingletonPattern.interfaces.department.IDepartmentService;
public final class QualityCheckService extends SingletonBase<QualityCheckService> implements IDepartmentService {
private static volatile QualityCheckService instance;
private QualityCheckService() {}
public static QualityCheckService getInstance() {
if (instance == null) {
synchronized (QualityCheckService.class) {
if (instance == null) instance = new QualityCheckService();
}
}
return instance;
}
@Override
public void executeBusiness() {
logger.info("质检:成色、工艺、尺寸、证书一致性核验");
}
@Override
public void printConsole() {
System.out.println("[QC]\uD83D\uDD0D 质量检测:成色、工艺、尺寸、证书一致性核验");
}
}
调用:
java
/**
* encoding: utf-8
* 版权所有 2026 ©涂聚文有限公司 ®
* 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
* 描述:单例模式 Singleton
* Author : geovindu,Geovin Du 涂聚文.
* IDE : IntelliJ IDEA 2024.3.6 Java 17
* # database : Oracle21c,MySQL 9.0,SQL Server 2019,PostgreSQL 17.1 Neo4j
* # OS : window10
* Datetime : 2026 - 2026/7/5 - 10:56
* User : geovindu
* Product : IntelliJ IDEA
* Project : javadesginpattern
* File : SingletonBll.java
* explain : 学习 类
**/
package BLL;
import SingletonPattern.core.workflow.JewelryWorkflowManager;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
// 单例模式
public class SingletonBll {
public void demo(){
// 强制控制台输出UTF8,解决Windows CMD中文乱码
System.setOut(new PrintStream(System.out, true, StandardCharsets.UTF_8));
JewelryWorkflowManager workflow = JewelryWorkflowManager.getInstance();
// 串行格式化输出(和你要求文本完全一致)
workflow.startSerialStandardWorkflow();
// 模拟高并发多线程执行
workflow.startConcurrentHighSafeWorkflow();
}
}
输出:
