你知道独生子女用编程怎么表示吗?单例模式了解一下

简介: 你知道独生子女用编程怎么表示吗?单例模式了解一下

大胖的new对象

“小马,请教你个问题,啥是佩奇?啊,不。啥是设计模式?”,大胖啃着雪糕,一副求知欲爆棚的眼色。

“设计模式嘛,就相当于36计,是解决问题的一种谋略。嗯……”,小马捋着自己的空气胡须,若有所思。

“就比如现在你需要安排你儿子去打个酱油,你儿子出发两分钟后,你又发现盐也没了,也需要买。这个时候你会怎么办?你会不会一冲动就想再生一个二儿子派去执行买盐任务呢?”,小马眯起了眼睛。

“什么呀,我都还没有女朋友。对象全靠new,那不是想new几个new几个,嘻嘻嘻。我new一个儿子买酱油,new一个二儿子买盐,再new一个买雪糕”,大胖翘起了二郎腿。

“那你知道每new一个对象的资源开销么?”,小马似乎看到了大胖的很多问号。

“可不都是这么实现的么?不然怎么做?”。

“问得好,那就来看看设计模式之独生子女-单例模式吧!”。

独生子女-单例模式

在oop编程中,设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

单例模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。笔者认为单例模式是23种设计模式中最简单的之一。

这个模式保证了单例类只能有一个实例,单例类必须自己创建自己的唯一实例。也就是,该模式实行了计划生育,每对父母(单例类)只能有一个唯一子女(单例),也就是只能买酱油完,再让他去买盐,再让他去买雪糕,不能再生了也不允许乱生儿子。

“小朋友,你是不是又有许多问号呀?”,小马调侃大胖。

“是有点懵圈,指教指教呢”。

大胖不用单例模式的代码

这时候该大胖上场了。大胖抡起键盘一顿操作,片刻钟之后,PHP代码出炉了。大胖创建了一个son儿子类,然后分别生了3个儿子去办事。真是男生不嫌生孩苦!敲完代码,大胖似乎也意识到了什么。小声咕噜:“这好像对老婆是有点残忍。”,的大胖把代码提交给了小马。

image.png


大胖的代码-儿子类(不要怀疑水印,嗯,那正是本人,已从百家弃坑~~)

小马的单例模式代码

小马喝上一口咖啡,二话未说,敲起了代码。号称独生子女的类就这样诞生了。

小马创建了一个父母单例类,创建了静态私有变量来保存儿子实例,私有化构造函数和克隆函数不允许外部调用。通过暴露静态方法getSonInstance()得到唯一的儿子实例。

image.png


小马的代码片段1

image.png

小马的代码片段2


大胖看着新出炉的代码,眼睛圆瞪。

大胖的惊叹

“哇,原来代码还可以这样写呀,单例模式令我大开眼界。果然这就是设计模式的魅力。”,大胖如获至宝。

“嗯,单例模式只允许创建一个对象,由于在系统内存中只存在一个对象,因此可以节约系统资源,当需要频繁创建和销毁的对象时单例模式无疑可以提高系统的性能,加快对象访问速度。因此对象需要被公用的场合适合使用,如多个模块使用同一个数据源连接对象等等。如:1.需要频繁实例化然后销毁的对象;2.创建对象时耗时过多或者耗资源过多,但又经常用到的对象;3.频繁访问数据库或文件的对象。其实最常见的就是PHP中连接mysql的句柄,还有……”。

“哦,我想起来了!单例模式以后真是要多用呢。”,还没等小马说完,大胖就恍然大悟。

“不过,也不能乱用。比如它就不适用于变化的对象,如果同一类型的对象总是要在不同的用例场景发生变化,单例就会引起数据的错误,不能保存彼此的状态。”。

“这么说我就明白了。”,大胖早已自我陶醉。

“嗯。其实单例模式只是设计模式中最简单的一种,还有许多更加巧妙的设计模式,都是前辈们的智慧结晶呀。”,小马话音未落,大胖抬头充满着无限的憧憬……

相关文章
|
2月前
|
SQL 设计模式 安全
Java编程中的单例模式深入解析
【8月更文挑战第27天】本文旨在探索Java中实现单例模式的多种方式,并分析其优缺点。我们将通过代码示例,展示如何在不同的场景下选择最合适的单例模式实现方法,以及如何避免常见的陷阱。
|
2月前
|
设计模式 安全 Java
Java编程中的单例模式实现与应用
【8月更文挑战第31天】在Java的世界里,单例模式是构建高效且资源友好应用的基石之一。本文将深入浅出地介绍如何通过单例模式确保类只有一个实例,并提供一个全局访问点。我们将探索多种实现方法,包括懒汉式、饿汉式和双重校验锁,同时也会讨论单例模式在多线程环境下的表现。无论你是Java新手还是资深开发者,这篇文章都将为你打开一扇理解并有效应用单例模式的大门。
|
2月前
|
设计模式 SQL 缓存
Java编程中的设计模式:单例模式的深入理解与应用
【8月更文挑战第22天】 在Java的世界里,设计模式是构建可维护、可扩展和灵活的软件系统的基石。本文将深入浅出地探讨单例模式这一经典设计模式,揭示其背后的哲学思想,并通过实例演示如何在Java项目中有效运用。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇洞悉软件设计深层逻辑的大门。
28 0
|
5月前
|
设计模式
【设计模式】单例模式的三种实现方式
【设计模式】单例模式的三种实现方式
32 1
|
12月前
|
安全 编译器
了解单例模式,工厂模式(简单易懂)
了解单例模式,工厂模式(简单易懂)
|
设计模式
设计模式-单例模式(程序中的计划生育)
设计模式-单例模式(程序中的计划生育)
54 0
|
设计模式 SQL 安全
【设计模式学习笔记】单例模式详解(懒汉式遇上多线程问题解析基于C++实现)
【设计模式学习笔记】单例模式详解(懒汉式遇上多线程问题解析基于C++实现)
332 0
【设计模式学习笔记】单例模式详解(懒汉式遇上多线程问题解析基于C++实现)
|
设计模式 安全 C++
代码操作中经常使用到设计模式之单例模式
代码操作中经常使用到设计模式之单例模式
140 0
代码操作中经常使用到设计模式之单例模式
|
设计模式 Java
Java常用设计模式-单例模式
Java常用设计模式-单例模式
110 0
|
设计模式 安全 程序员
【深入学习设计模式】——单例模式
【深入学习设计模式】——单例模式
93 0