千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 所有开发人员都应该知道的3种设计模式类型之一(含代码示例)

所有开发人员都应该知道的3种设计模式类型之一(含代码示例)

来源:千锋教育
发布人:syq
时间: 2022-09-16 15:25:09 1663313109

  什么是设计模式?

  设计模式是我们软件工程师经常遇到的反复出现的问题的设计级解决方案。这不是代码 - 我再说一遍,❌代码。这就像是关于如何解决这些问题和设计解决方案的描述。

设计模式类型

  使用这些模式被认为是很好的做法,因为解决方案的设计经过了相当多的尝试和测试,从而提高了最终代码的可读性。设计模式通常是为OOP语言创建和使用的,比如Java,从这里开始的大多数示例都将被编写出来。

  设计模式的类型

  目前发现了大约26种模式(我几乎不认为我会全部完成它们......)。

  这26种可分为3种类型:

  1. 创建:这些模式是为类实例化而设计的。它们可以是类创建模式或对象创建模式。

  2.结构:这些模式是根据类的结构和组成而设计的。大多数这些模式的主要目标是增加所涉及的类的功能,而不改变其大部分组成。

  3.行为:这些模式是根据一个班级如何与其他班级交流而设计的。

  在这篇文章中,我们将介绍每种分类类型的一个基本设计模式。

  类型 1:创造 - 单例设计模式

  单例设计模式是一种创建模式,其目标是仅创建一个类的一个实例,并且仅提供该对象的一个全局访问点。Java中此类的一个常用示例是日历,您无法在其中创建该类的实例。它还使用自己的方法来获取要使用的对象。getInstance()

  使用单例设计模式的类将包括:

5

  单例类图

  一个私有静态变量,保存类的唯一实例。

  私有构造函数,因此无法在其他任何位置实例化它。

  一个公共静态方法,用于返回类的单个实例。

  单例设计有许多不同的实现。今天,我将介绍的实现;

  1. 急切实例化

  2. 惰性实例化

  3. 线程安全实例化

  雄心勃勃的人

6

  这种类型的实例化发生在类加载期间,因为变量实例的实例化发生在任何方法之外。如果客户端应用程序根本没有使用此类,这将带来巨大的缺点。如果未使用此类,则应急计划是惰性实例化。

  懒惰的日子

  与上述实现没有太大区别。主要区别在于,静态变量最初声明为 null,并且仅当实例变量在检查时保持空值时,才在方法中实例化。getInstance()

7

  这修复了一个问题,但另一个问题仍然存在。如果两个不同的客户端同时访问单例类,正好是毫秒,该怎么办?好吧,他们将同时检查实例是否为空,并会发现它是真的,因此将为两个客户端的每个请求创建两个类实例。为了解决这个问题,将实现线程安全实例化。

  (螺纹)安全是关键

  在 Java 中,关键字 synchronized 用于方法或对象以实现线程安全,以便一次只有一个线程访问特定资源。类实例化放在同步块中,以便该方法在给定时间只能由一个客户端访问。

7.1

  同步方法的开销很高,并且会降低整个操作的性能。

  例如,如果实例变量已实例化,则每次任何客户端访问该方法时,都会运行该方法并降低性能。发生这种情况只是为了检查变量的值是否为空。如果它发现它是,它将离开该方法。getInstance() synchronized instance

  为了减少此开销,使用双重锁定。该检查也先于该方法使用,如果该值仅为 null,则该方法是否运行。synchronized synchronized

8

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT
开班信息
北京校区
  • 北京校区
  • 大连校区
  • 广州校区
  • 成都校区
  • 杭州校区
  • 长沙校区
  • 合肥校区
  • 南京校区
  • 上海校区
  • 深圳校区
  • 武汉校区
  • 郑州校区
  • 西安校区
  • 青岛校区
  • 重庆校区
  • 太原校区
  • 沈阳校区
  • 南昌校区
  • 哈尔滨校区