总结下鸿蒙app开发中的 class类中的 访问修饰符和静态修饰符 等这些命名的含义 以及在单例中的使用案例
·
在鸿蒙应用开发的 class 类中,访问修饰符(public/private/protected)和静态修饰符(static)是控制类成员行为的核心工具,而单例模式(确保类只有一个实例)的实现高度依赖这些修饰符。以下是详细总结及单例中的使用案例:
一、核心修饰符的含义
1. 访问修饰符(控制访问范围)
| 修饰符 | 含义 | 可访问范围 |
|---|---|---|
public |
公共成员(默认),无访问限制 | 类内部、外部、子类均能访问 |
private |
私有成员,仅当前类内部可访问 | 仅类自身,外部和子类均不可访问 |
protected |
受保护成员,允许当前类和子类访问 | 类内部和子类,外部不可访问 |
2. 静态修饰符(static)
- 修饰的成员(属性 / 方法)属于类本身,而非实例,所有实例共享同一静态成员。
- 无需创建实例,直接通过
类名.成员调用,常用于工具方法、全局状态或单例实例存储。
3. 只读修饰符(readonly)
- 成员初始化后不可修改,可修饰实例属性或静态属性,确保数据安全性。
二、单例模式中修饰符的使用案例
单例模式的核心是确保类在应用生命周期中只有一个实例,并提供全局访问点。在鸿蒙开发中,常用 static 存储唯一实例,用 private 限制构造函数防止外部创建新实例。
典型单例实现(结合修饰符)
typescript
// 日志管理工具类(单例模式)
class Logger {
// 1. 静态私有属性:存储唯一实例(static保证属于类,private防止外部修改)
private static instance: Logger | null = null;
// 2. 私有构造函数(private防止外部通过new创建实例)
private constructor() {
// 初始化逻辑(如配置日志级别)
}
// 3. 静态公共方法:提供全局访问点(static允许类名直接调用,public允许外部访问)
public static getInstance(): Logger {
if (!Logger.instance) {
// 仅第一次调用时创建实例
Logger.instance = new Logger();
}
return Logger.instance;
}
// 4. 公共实例方法:日志打印功能(public允许外部调用)
public log(message: string): void {
console.log(`[LOG] ${message}`);
}
// 5. 私有辅助方法:内部处理逻辑(private隐藏实现细节)
private formatMessage(message: string): string {
return `[${new Date().toLocaleString()}] ${message}`;
}
}
使用方式
typescript
// 无法通过new创建实例(构造函数是private)
// const logger = new Logger(); // 报错
// 只能通过静态方法获取唯一实例
const logger1 = Logger.getInstance();
const logger2 = Logger.getInstance();
console.log(logger1 === logger2); // 输出:true(证明是同一实例)
logger1.log("应用启动"); // 输出:[LOG] [2023-10-16 10:00:00] 应用启动
三、单例中修饰符的关键作用
-
private constructor()禁止外部通过new关键字创建实例,确保实例只能由类内部生成,是单例的核心约束。 -
private static instancestatic保证实例存储在类级别,而非实例级别,全局唯一。private防止外部直接修改或赋值instance,避免单例被破坏。
-
public static getInstance()static允许通过类名.getInstance()直接调用,无需先创建实例。public暴露全局访问点,让外部能获取单例实例。
-
其他成员修饰符
- 工具方法(如日志打印)用
public暴露给外部使用。 - 内部辅助逻辑(如消息格式化)用
private隐藏,避免外部依赖。
- 工具方法(如日志打印)用
四、常见单例场景(鸿蒙开发)
- 全局状态管理:如用户信息管理器(
UserManager),确保全应用使用同一用户实例。 - 工具类:如网络请求工具(
HttpUtil)、存储工具(StorageUtil),避免重复初始化资源。 - 服务类:如音乐播放控制器(
AudioPlayer),确保音频播放状态全局一致。
总结
- 访问修饰符通过控制成员可见性,实现单例的 “封装性”(
private构造函数和实例)和 “可访问性”(public访问方法)。 - 静态修饰符(
static)实现单例的 “唯一性”(类级实例存储)和 “全局访问”(静态获取方法)。 - 在鸿蒙开发中,合理结合这些修饰符实现的单例,能有效节省资源、保证状态一致性,是大型应用的常用设计模式。
更多推荐

所有评论(0)