设计模式:Java 中的单例
已发表: 2021-11-13当程序员需要在面向对象的软件开发中利用最佳可用实践时,设计模式对他们是有益的。 设计模式可以理解为用于解决手头设计问题的经过充分验证和尝试和测试的解决方案。 设计系统描述了问题、解决方案、何时应用解决方案及其后果。 在某种程度上,设计模式可以被认为是软件开发人员在解决特定的面向对象设计问题时可以实现的不同模板。
与从头开始编码相比,在 Java 中使用设计模式的一些特性包括:
- 设计模式已经定义和实现。 因此,它们提供了解决重复性问题的标准方法。 从这个意义上说,它可以帮助程序员节省大量时间和精力。
- 使用设计模式可确保代码的可重用性,从而提高 Java 代码的可维护性和健壮性。 所有这些都会降低手头软件的总拥有成本 (TCO)。
- 设计模式使代码易于阅读和理解,从而实现更快的沟通和无缝的软件开发。
Java 编程语言为程序员和开发人员提供了各种设计模式,大致可以分为三类:
- 创意设计模式
- 结构设计模式
- 行为设计模式
所有这些模式都用于不同的用例和目的。 通过这篇文章,我们来谈谈Java中的一种设计模式——单例设计模式,它属于Creational Design Patterns范畴。
目录
Java中的单例设计模式
单例设计模式属于创建设计模式类别。 它确保一个类只有一个实例,为这个实例提供一个全局访问点。 在这样做的过程中,单例设计模式同时解决了两个问题——包括:
1. 它确保给定的类只有一个实例。
考虑这一点很重要,尤其是在处理共享资源(如数据库或文件)时。 想象一下,您创建了一个对象,但过了一会儿,决定创建一个新对象。 在单例设计模式中,您不会收到新的对象,而是会得到您已经制作的对象。 这样,这种设计模式就可以确保对象没有冗余,并且一个类只有一个实例。 构造函数无法复制此行为,因为构造函数调用必须始终返回一个新对象。
2. 为特定实例提供全局访问点。
用于存储基本对象的全局变量非常方便。 它们也同样不安全,因为任何一段代码都有能力覆盖全局变量的内容,从而导致你的代码出现错误。 就像全局变量一样,单例模式允许您从程序中的任何位置访问不同的对象。 但是,与全局变量不同,单例模式可以保护该实例不被另一个程序覆盖。
如今,单例设计模式被如此广泛地使用和流行,即使它只解决了上面列出的问题之一,程序员也可能称之为单例。 单例设计模式的所有实现都有以下两个共同步骤:
- 将默认构造函数设为私有,以防止其他类和对象对 Singleton 类使用新运算符。
- 构建静态创建方法以充当构造函数。 然后,此方法调用私有构造函数来创建对象并将其保存在静态字段中。 现在对这个特定方法的所有即将调用都返回缓存的对象。
政府的运作是了解单例设计模式如何工作的一个很好的现实例子。 无论构成政府的个人的个人身份如何,“X 政府”的标题是识别正在谈论的人群的全球访问点。
在 Java 中实现单例设计模式
请通过以下步骤列表在 Java 中实现您自己的单例设计模式:
- 将私有静态字段添加到您希望存储单例实例的类。
- 要获得适当的单例实例,您必须声明一个公共静态方法。
- 现在,您需要在静态方法中执行“延迟初始化”。 这实际上应该在第一次调用时开发一个新对象并将其放入静态字段中。 静态方法必须始终在所有后续调用中返回该特定实例。
- 将构造函数设为私有。 类的静态方法仍然可以调用构造函数,但不能调用其他对象。
- 请检查客户端代码并将所有对 Singleton 构造函数的直接调用替换为对其静态创建方法的调用。
综上所述
Java 是一种高度多样化和有影响力的编程语言,它已成为当今使用的大多数 Web 和桌面应用程序的基础。 它提供了多种功能和策略,程序员可以使用这些功能和策略以优化的方式开发性能更好的软件。 设计模式是 Java 程序员采用的一种策略,以使他们的代码具有可读性、可重用性和可理解性。
设计模式是任何有抱负的软件开发人员都应该研究的基本概念之一。 软件开发的世界是广阔的,它涵盖了从前端、后端、数据库、服务器等各个方面。 在这种情况下,需要将时间安排在您的学习方法中。 在 upGrad,您可以查看软件开发课程,这些课程将帮助您在软件开发领域建立长久的职业生涯。 本课程与 IIIT-B 合作提供,由行业专家教授,让您有机会朝着您选择的方向发展您的职业生涯。 查看课程详情并立即注册——课程将于 2021 年 9 月 30 日开始!
单例设计模式是 Java 唯一可用的设计模式吗?
不,Java 为程序员提供了许多设计模式,Singleton 只是其中之一。
Java 有哪些可用的设计模式类型?
Java 为开发人员提供了大致三种类型的设计模式;
1. 创意设计模式
2. 结构设计模式
3. 行为设计模式
在 Java 中使用设计模式有什么好处?
在你的代码中使用设计模式提供了以下肯定的好处:
1. 增强可读性
2.提高模块化
3. 易于访问
4. 易于设计和创建程序。