代码块&设计模式(单例)

本文详细阐述了Java中的单例模式,包括饿汉式和懒汉式的实现方式,以及静态代码块与普通代码块的执行顺序和区别。同时讨论了设计模式在代码复用和优化中的作用,以及类加载时机对代码的影响。
摘要由CSDN通过智能技术生成

[修饰符] {代码};

注意:(1)、修饰符可选,要写的话,也只能写static;(2)、代码块分两类,使用static修饰的叫静态代码块,没有static修饰的叫普通代码块/非静态代码块;(3)、逻辑语句可以是任何逻辑语句(输入、输出、方法调用、循环、判断等);(4)、“;”分号可以写上,也可以省略。

4、好处:


(1)、相当于另外一种形式的构造器(对构造器的补充机制),可以做初始化的操作。

(2)、如果多个构造器中都有重复的语句,可以抽取到初始化块中,提高代码的重用性。

(3)、代码块的快速入门。

5、代码块使用注意事项和细节讨论(重点):


(static代码块是类加载时,执行,只会执行一次,普通代码块是在创建对象时调用的,创建一次,调用一次 。)

(类加载的三种情况,重点内容,背下来)

(因为使用类静态成员时,并没有创建对象,所以不满足普通代码块调用的条件)

(执行顺序:1、静态代码块与静态属性初始化(两者谁先定义谁先输出);2、再执行普通代码块与普通属性的初始化(谁先定义谁先输出); 3、最后执行构造方法(构造器))

(执行顺序:1、super()指向父类中的内容(super、本类普通代码块、本类构造器);2、调用本类中的普通代码块;3、调用本类的构造器)

(执行步骤:1、类的加载(先加载父类,再加载子类);2、对象创建(通过子类构造器创建,进入构造器,执行super(找父类构造器(里面也有super,普通代码块,构造器方法)),普通代码块,最后才是构造器中的输出方法)

父类静态>子类静态>父类普通>父类构造>子类普通>子类构造)

二、设计模式

======

1、什么是设计模式?


是指静态方法和属性的经典使用,是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式就像是经典的棋谱,不同的棋局,我们就用不同的棋谱,免去我们自己再思考和摸索。

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,是可复用面向对象软件的基础。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

2、分类


总体来说设计模式分为三大类:

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

3、今天我们只详细说一说——单例模式


3.1.单例模式的概念:

所谓类的的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。(单例,就是单个的实例)

3.2.单例模式的分类:

饿汉式和懒汉式

饿汉式:饿汉模式的意思是,我先把对象(面包)创建好,等我要用(吃)的直接直接来拿就行了。这种模式是最简单最省心的,不足的地方是容易造成资源上的浪费(比如:我事先把面包都做好了,但是你并不一定吃,这样容易造成资源的浪费)。

懒汉式:懒汉模式的意思是,我先不创建类的对象实例,等你需要的时候我再创建。但是这种模式在并发情况下会出现创建多个对象的情况。

3.3.饿汉模式

3.3.1. 饿汉式的实现步骤:

(1)、构造器私有化,防止用户直接去new

(2)、类的内部创建对象

(3)、向外暴露一个静态的公共方法。getInstance

(4)、代码实现

3.2.2.饿汉式代码图:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

为什么我不完全主张自学?
平台上的大牛基本上都有很多年的工作经验了,你有没有想过之前行业的门槛是什么样的,现在行业门槛是什么样的?以前企业对于程序员能力要求没有这么高,甚至十多年前你只要会写个“Hello World”,你都可以入门这个行业,所以以前要入门是完全可以入门的。
②现在也有一些优秀的年轻大牛,他们或许也是自学成才,但是他们一定是具备优秀的学习能力,优秀的自我管理能力(时间管理,静心坚持等方面)以及善于发现问题并总结问题。
如果说你认为你的目标十分明确,能做到第②点所说的几个点,以目前的市场来看,你才真正的适合去自学。

除此之外,对于绝大部分人来说,报班一定是最好的一种快速成长的方式。但是有个问题,现在市场上的培训机构质量参差不齐,如果你没有找准一个好的培训班,完全是浪费精力,时间以及金钱,这个需要自己去甄别选择。

我个人建议线上比线下的性价比更高,线下培训价格基本上没2W是下不来的,线上教育现在比较成熟了,此次疫情期间,学生基本上都感受过线上的学习模式。相比线下而言,线上的优势以我的了解主要是以下几个方面:
①价格:线上的价格基本上是线下的一半;
②老师:相对而言线上教育的师资力量比线下更强大也更加丰富,资源更好协调;
③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;
④课程:从课程内容来说,确实要比线下讲的更加深入。

应该学哪些技术才能达到企业的要求?(下图总结)

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
结)**

[外链图片转存中…(img-LgXZEbFJ-1713514591159)]

[外链图片转存中…(img-Ohfh5ZpT-1713514591159)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值