单例模式2025.10.30

33 阅读1分钟

package level02

/*
 * 创建对象的方式:
 * 1. class → new
 * 2. 直接通过object定义(单例对象,只有一个,孤单)
 *    适用于数据存储,提供一些工具方法,公用方法......
 */
object Class07 {
  object Myschool {
    val name: String = "xxx学校"

    def say(): Unit = {
      println(s"say:$name")
    }
  }

  def main(args: Array[String]): Unit = {
    // 对象名.属性名
    Myschool.name
    // 对象名.方法名()
    Myschool.say()
    
  }
}
  1. 独立工具类:封装无状态的公用方法(如数据格式化、计算逻辑),避免重复创建实例浪费资源。
  2. 全局数据容器:存储全局共享的常量或配置(如系统参数、固定标识),确保全程序使用统一数据。

单例对象在实际开发中还有更多高频用途,常见场景包括:

-   **工具类封装**:如 `DateUtils`(日期格式化)、`StringUtils`(字符串处理),将通用方法集中管理。
-   **配置管理**:存储数据库连接参数、接口地址等全局配置,避免硬编码分散在代码中。
-   **伴生对象**:与普通类(`class`)同名,作为类的 “静态扩展”,负责类的工厂方法或静态逻辑(如 `Person` 类的 `apply` 方法)。