java: Singleton Pattern

项目结构:

这是一套完整的Java单例模式实现代码,展示了珠宝企业全流程管理系统的设计。系统采用双重校验锁实现线程安全的单例模式,包含11个业务部门服务类(如原料采购、设计、生产等),通过JewelryWorkflowManager统一调度。

核心特点:

  1. 使用volatile+synchronized确保线程安全
  2. 抽象基类SingletonBase提供统一日志功能
  3. 支持两种执行模式:
    • 串行流程:顺序执行各部门业务并格式化输出
    • 高并发模式:使用线程池并行执行各部门业务
  4. 严格控制台输出编码(UTF-8)解决乱码问题
  5. 每个服务类都是独立单例,通过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();
    }
}

输出:

相关推荐
Nturmoils2 小时前
JOIN 不是拼上就完事,多表查询这几个坑先跑一遍
数据库·后端
AI行业学习2 小时前
2026 版 Notepad++ 完整图文安装指南|官方渠道无捆绑,一键切换中文界面
开发语言·人工智能·python·html·notepad++
IT_陈寒3 小时前
Vue的v-if和v-show,我竟然用错了这么久
前端·人工智能·后端
鹏易灵3 小时前
C++——7.类与对象,掌握封装、继承、多态.详解
开发语言·c++·算法
一路向北North3 小时前
Spring Security OAuth2.0(16):密码模式
java·后端·spring
水无痕simon3 小时前
5 多表操作
java·开发语言·数据库
初阳7853 小时前
【Qt】系统相关(2)——文件
开发语言·qt
大P哥阿豪3 小时前
Go panic & recover:深入Go语言的异常拯救之道
开发语言·后端·golang·go
IT_陈寒3 小时前
React状态更新延迟搞晕我,原来是闭包在捣鬼
前端·人工智能·后端