疫情让我们学会了什么

前言

事情开始于2019年12月8日,官方通报首例不明原因肺炎患者病历。

到现在时间已经过去了 将近2年,我们经历了封城、隔离、居家办公,我们有过恐慌,有过感动,

我们曾被无私的医生、护士、军人、志愿者等等而感动,他们的“病情不退誓不回”一次次让我们落泪。

我们经历了火神医院十天完工的奇迹,我们经历的太多太多了。

每当有难的时候,你就能体会的你所在的国家是如此的强大,面对疫情我们毫不逊色于某些发达国家。

此生无悔入华夏,来世还做华夏人!

一、学习

现在是2021年10月31日,疫情已经取得了阶段性胜利。

身为程序员的我,能做到的是不为国家添麻烦。

所以我平时也不出去浪,在家学习学习,提升一下自己也挺不错。

之前看ReentrantLock源码的时候涉及到AQS,里边用到了模板方法模式,所以我打算今天输出一篇模板方法模式的文章。

疫情期间有段时间是全部居家隔离,于是有人在学习做饭,有人在减肥,有人在造娃。

我们以此为例讲一下模板方法。

file

代码实现:

AbstractRegulations

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
java复制代码package test;


/**
* @author 木子的昼夜编程
*/
public abstract class AbstractRegulations {

// 每个人都有自己的名字
String name;
public AbstractRegulations(){}
public AbstractRegulations(String name) {
this.name = name;
}
// 国家指定了你的行动范围 和所有大概活动
// 但是不管你在家干什么
public void doWhat(){
System.out.println(name+"早上9点小区带好口罩,楼下领菜。");
stayAtHome();
System.out.println(name+"晚上8点自家门口带好口罩,等待志愿者测体温。");
}

protected void stayAtHome() {
throw new UnsupportedOperationException();
}
}

XiaoMingRegulations

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
java复制代码package test;

/**
* @author 木子的昼夜编程
*/
public class XiaoMingRegulations extends AbstractRegulations{
public XiaoMingRegulations(){}
public XiaoMingRegulations(String name){
super(name);
}
// 小明自定义自己要干的事情
@Override
protected void stayAtHome() {
System.out.println("我是小明,我在家吃饭,吃的胖胖的。");
}
}

XiaoQiangRegulations

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
java复制代码package test;

/**
* @author 木子的昼夜编程
*/
public class XiaoQiangRegulations extends AbstractRegulations{
public XiaoQiangRegulations(){}
public XiaoQiangRegulations(String name){
super(name);
}
// 小强自定义自己干的事情
@Override
protected void stayAtHome() {
System.out.println("我是小强,我在家练腰,练得杠杠的。");
}
}

Test

1
2
3
4
5
6
7
8
9
10
11
12
java复制代码package test;

/**
* @author 木子的昼夜编程
*/
public class Test {
public static void main(String[] args) {
new XiaoMingRegulations("小明").doWhat();
System.out.println("---------------华丽丽的分割线-------------------");
new XiaoQiangRegulations("小强").doWhat();
}
}

输出:

1
2
3
4
5
6
7
tex复制代码小明早上9点小区带好口罩,楼下领菜。
我是小明,我在家吃饭,吃的胖胖的。
小明晚上8点自家门口带好口罩,等待志愿者测体温。
---------------华丽丽的分割线-------------------
小强早上9点小区带好口罩,楼下领菜。
我是小强,我在家练腰,练得杠杠的。
小强晚上8点自家门口带好口罩,等待志愿者测体温。

二、唠唠

看过我之前文章的人都知道,AQS也是用了模板方法模式。

我们稍微回顾一下AQS的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
java复制代码public abstract class AbstractQueuedSynchronizer
extends AbstractOwnableSynchronizer
implements java.io.Serializable {

// 尝试获取凭证
public final void acquire(int arg) {
// 调用tryAcquire 尝试获取一次
if (!tryAcquire(arg) &&
// 获取失败就放到队列中
acquireQueued(addWaiter(Node.EXCLUSIVE), arg))
selfInterrupt();
}
// 可以看到tryAcquire是没有实现的,需要子类来自己实现
protected boolean tryAcquire(int arg) {
throw new UnsupportedOperationException();
}
}

所以当我们看到这里的时候不要懵,这种的一般都是子类实现,直接看她对应的实现类就可以了。

file

三、更多

还要更多?今天么有了,专门找了一个简单的知识点进行文章的输出。

还有点儿工作没有完成,要在家加加班,做一下。

打工人,打工魂,打工的都是人上人,今天搬砖你不狠,明天地位就不够稳。

file

再见各位打工人。

欢迎关注公众号:木子的昼夜编程

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%