鸿蒙next开发:设计模式之单例模式

162 篇文章 1 订阅
152 篇文章 2 订阅

 前言

软件设计模式([Design pattern](baike.baidu.com/item/Design pattern/10186718?fromModule=lemma_inlink)),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

设计模式的作用是:为我们在进行稍微复杂的程序设计时,迅速提高可靠的解决方案。而不是等待问题暴露了,再去修复我们的程序

小故事

1991年,Erich Gamma 与Richard Helm, Ralph Johnson ,John Vlissides合作出版了Design Patterns - Elements of Reusable Object-Oriented Software 一书,在此书中共收录了23个设计模式

  • 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
  • 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
  • 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

在实际开发中,很少会有程序员在同一个项目中全部用上以上的23种设计模式。所以边学边用、学以致用即可。

单例模式

单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。

好比如在一个规模不大的公司中,存在以下的角色

  1. 人事
  2. 财务
  3. 开发
  4. 测试
  5. 实施
  6. 运维
  7. 网管
  8. 老板

但其实由始至终,都只是你一个人在充当以上的角色而已。

使用场景

太多了

  1. 系统服务管理:鸿蒙操作系统中有很多系统服务,如系统时间管理、网络管理等。这些服务需要全局唯一的实例来提供服务,以确保服务的唯一性和一致性。通过使用单例模式,可以确保系统中只有一个这样的服务实例,方便管理和访问。
  2. 设备访问:鸿蒙操作系统中的设备访问层,如摄像头访问、传感器访问等,也需要使用单例模式来确保只有一个实例进行设备访问。这有助于避免多个实例同时访问设备导致的冲突和资源浪费。
  3. 资源管理:鸿蒙操作系统中的资源管理器,如内存管理器、文件系统管理器等,也需要使用单例模式来管理全局资源。通过单例模式,可以确保只有一个实例对资源进行管理和分配,提高系统的稳定性和性能。
  4. 全局状态管理:在鸿蒙应用开发中,经常需要全局唯一的实例来管理整个应用的配置和状态,如数据库访问对象等。通过使用单例模式,可以保证整个应用只有一个实例,避免重复实例造成的资源浪费和数据不一致。

程序设计

进入正题,众所周知,每当我们new一个实例的时候,内存中都会开辟一个新的空间,此时不同的实例是存在各自的内存空间中的。


对应内存示意图为:

改造版本1

因为new天生的特性就会开辟新内存空间,因此我们改造的方向是不让用户通过new来创建实例。替换成静态方法的方式来创建

核心代码在于 static getInstance 这里,它用过判断是否已经存在实例来决定是否要执行new操作

对比结果:

改造版本2

但是这个时候可能会有小伙伴忘记我们使用了单例模式了,它还是一样会通过new的方式创建对象

此时我们可以将 constructor 设置为 私有,这样当小伙伴new的时候,便会有一个语法错误提示

ps: artTs中 不能 使用 new.target 来判断用户是否存在new的行为

完整代码

class Person {
  static instance: Person | null = null

  static getInstance() {
    if (!Person.instance) {
      Person.instance = new Person()
    }
    return Person.instance
  }

    // 设置方法为私有
    private  constructor() {   
  }
}

const p1 = Person.getInstance()
const p2 = Person.getInstance()
console.log("", p1 === p2)// true


最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。 

鸿蒙HarmonyOS Next全套学习资料←点击领取!

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值