Skip to content

Commit 2b4e866

Browse files
committed
新增Java设计模式示例代码和文档
1 parent 052e410 commit 2b4e866

File tree

13 files changed

+547
-2
lines changed

13 files changed

+547
-2
lines changed

README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
<a href="//shang.qq.com/wpa/qunwpa?idkey=c1ffcc74ac64e98b1546b94537c581922548a7e63f78a86fcb59cef47988f453">
1717
<img src="https://img.shields.io/badge/QQ%E7%BE%A4-280891494-informational.svg" target="_blank" alt="酷玩Android你最牛" title="280891494"></a>
1818
</p>
19-
2019
----
2120

2221
## 介绍
@@ -58,7 +57,12 @@ Android只是太多太杂乱,很多人都不知道从何学起。也一些东
5857

5958
:pencil: :one: **二维码处理(待完善)**
6059

61-
> ### 4、开源库整理
60+
> ### 4、Java知识点解读
61+
62+
**设计模式:** [Java23种设计模式](design_patterns)
63+
64+
65+
> ### 5、开源库整理
6266
6367
:fire: :one: **[全面总结国内BATH等大厂开源的安卓有关的库](https://github.com/AweiLoveAndroid/CommonDevKnowledge/blob/master/%E5%9B%BD%E5%86%85BATH%E7%AD%89%E5%A4%A7%E5%8E%82%E5%BC%80%E6%BA%90%E7%9A%84%E5%AE%89%E5%8D%93%E6%9C%89%E5%85%B3%E7%9A%84%E5%BA%93/%E5%85%A8%E9%9D%A2%E6%80%BB%E7%BB%93%E5%9B%BD%E5%86%85BATH%E7%AD%89%E5%A4%A7%E5%8E%82%E5%BC%80%E6%BA%90%E7%9A%84%E5%AE%89%E5%8D%93%E6%9C%89%E5%85%B3%E7%9A%84%E5%BA%93.md)** 这一部分同步发布在我的简书博客,文章地址:[https://www.jianshu.com/p/2a6c806ba2fc](https://www.jianshu.com/p/2a6c806ba2fc)
6468

design_patterns/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
由光头强引发的Java23种设计模式的思考:
2+
3+
代码|详细文章讲解
4+
----|----
5+
[](src/com/lzw/part1_creation_mode/builder)| [Java设计模式4之建造者模式(光头强买电锯引发的思考)](https://www.jianshu.com/p/713120e9dc59)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
结构型模式分为以下 5 种(有的版也把简单工厂模式算在里面,就是6种):
2+
3+
单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。
4+
原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。
5+
工厂方法(FactoryMethod)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。
6+
抽象工厂(AbstractFactory)模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。
7+
建造者(Builder)模式:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.lzw.part1_creation_mode.builder.chainsaw;
2+
3+
/**
4+
* 链锯建筑者
5+
*/
6+
public interface ChainsawBuilder {
7+
8+
// 蓄电池
9+
void battery();
10+
// 电动机
11+
void motor();
12+
// 减速箱
13+
void reductionGearbox();
14+
// 防护罩
15+
void hood();
16+
// 手柄
17+
void handle();
18+
// 开关
19+
void switches();
20+
// 插头
21+
void plug();
22+
// 圆锯片
23+
void circularSaw();
24+
25+
// 获取链锯(产品)的实例
26+
Chainsaws getChainsaws();
27+
28+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.lzw.part1_creation_mode.builder.chainsaw;
2+
3+
/**
4+
* 链锯建筑者(具体建筑者)
5+
*/
6+
public class ChainsawBuilderImpl implements ChainsawBuilder{
7+
8+
private Chainsaws chainsaws;
9+
10+
public ChainsawBuilderImpl() {
11+
chainsaws = new Chainsaws();
12+
}
13+
14+
15+
@Override
16+
public void battery() {
17+
chainsaws.setBattery("普通锂电池");
18+
}
19+
20+
@Override
21+
public void motor() {
22+
chainsaws.setMotor("普通铝电动机");
23+
}
24+
25+
@Override
26+
public void reductionGearbox() {
27+
chainsaws.setReductionGearbox("普通减速箱");
28+
}
29+
30+
@Override
31+
public void hood() {
32+
chainsaws.setHood("普通PVC塑料");
33+
}
34+
35+
@Override
36+
public void handle() {
37+
chainsaws.setHandle("普通PVC塑料");
38+
}
39+
40+
@Override
41+
public void switches() {
42+
chainsaws.setSwitches("普通拉线开关");
43+
}
44+
45+
@Override
46+
public void plug() {
47+
chainsaws.setPlug("普通三口插头");
48+
}
49+
50+
@Override
51+
public void circularSaw() {
52+
chainsaws.setCircularSaw("普通钢锯片");
53+
}
54+
55+
@Override
56+
public Chainsaws getChainsaws() {
57+
return chainsaws;
58+
}
59+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.lzw.part1_creation_mode.builder.chainsaw;
2+
3+
/**
4+
* 链锯建筑者(具体建筑者)
5+
*/
6+
public class ChainsawBuilderImpl2 implements ChainsawBuilder{
7+
8+
private Chainsaws chainsaws;
9+
10+
public ChainsawBuilderImpl2() {
11+
chainsaws = new Chainsaws();
12+
}
13+
14+
15+
@Override
16+
public void battery() {
17+
chainsaws.setBattery("环保大容量锂电池");
18+
}
19+
20+
@Override
21+
public void motor() {
22+
chainsaws.setMotor("动力强耐高温散热好的纯铜电机");
23+
}
24+
25+
@Override
26+
public void reductionGearbox() {
27+
chainsaws.setReductionGearbox("减震变频高功率变速箱");
28+
}
29+
30+
@Override
31+
public void hood() {
32+
chainsaws.setHood("加厚加固耐磨抗打击防护罩");
33+
}
34+
35+
@Override
36+
public void handle() {
37+
chainsaws.setHandle("人体工体学包胶手柄");
38+
}
39+
40+
@Override
41+
public void switches() {
42+
chainsaws.setSwitches("调速防误触智能开关");
43+
}
44+
45+
@Override
46+
public void plug() {
47+
chainsaws.setPlug("环保防触电插头");
48+
}
49+
50+
@Override
51+
public void circularSaw() {
52+
chainsaws.setCircularSaw("高硬度锯片");
53+
}
54+
55+
@Override
56+
public Chainsaws getChainsaws() {
57+
return chainsaws;
58+
}
59+
}
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
package com.lzw.part1_creation_mode.builder.chainsaw;
2+
3+
/**
4+
* 产品(链锯)
5+
*/
6+
public class Chainsaws {
7+
8+
// 蓄电池
9+
private String battery;
10+
// 电动机
11+
private String motor;
12+
// 减速箱
13+
private String reductionGearbox;
14+
// 防护罩
15+
private String hood;
16+
// 手柄
17+
private String handle;
18+
// 开关
19+
private String switches;
20+
// 插头
21+
private String plug;
22+
// 圆锯片
23+
private String circularSaw;
24+
25+
26+
public String getBattery() {
27+
return battery;
28+
}
29+
30+
public void setBattery(String battery) {
31+
this.battery = battery;
32+
}
33+
34+
public String getMotor() {
35+
return motor;
36+
}
37+
38+
public void setMotor(String motor) {
39+
this.motor = motor;
40+
}
41+
42+
public String getReductionGearbox() {
43+
return reductionGearbox;
44+
}
45+
46+
public void setReductionGearbox(String reductionGearbox) {
47+
this.reductionGearbox = reductionGearbox;
48+
}
49+
50+
public String getHood() {
51+
return hood;
52+
}
53+
54+
public void setHood(String hood) {
55+
this.hood = hood;
56+
}
57+
58+
public String getHandle() {
59+
return handle;
60+
}
61+
62+
public void setHandle(String handle) {
63+
this.handle = handle;
64+
}
65+
66+
public String getSwitches() {
67+
return switches;
68+
}
69+
70+
public void setSwitches(String switches) {
71+
this.switches = switches;
72+
}
73+
74+
public String getPlug() {
75+
return plug;
76+
}
77+
78+
79+
public void setPlug(String plug) {
80+
this.plug = plug;
81+
}
82+
83+
public String getCircularSaw() {
84+
return circularSaw;
85+
}
86+
87+
public void setCircularSaw(String circularSaw) {
88+
this.circularSaw = circularSaw;
89+
}
90+
91+
92+
@Override
93+
public String toString() {
94+
return "Chainsaws{" +
95+
"\n battery='" + battery + '\'' +
96+
", motor='" + motor + '\'' +
97+
", reductionGearbox='" + reductionGearbox + '\'' +
98+
", hood='" + hood + '\'' +
99+
", handle='" + handle + '\'' +
100+
", switches='" + switches + '\'' +
101+
", plug='" + plug + '\'' +
102+
", circularSaw='" + circularSaw + '\'' +
103+
"链锯已经做好了\n" + '}';
104+
}
105+
106+
107+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.lzw.part1_creation_mode.builder.chainsaw;
2+
3+
/**
4+
* 五金店老板(验收方)
5+
*/
6+
public class HardwareStoreBoss {
7+
8+
// 电话通知建造方,查看进度如何了
9+
public Chainsaws notify(ChainsawBuilder builder){
10+
11+
// 蓄电池
12+
builder.battery();
13+
// 电动机
14+
builder.motor();
15+
// 减速箱
16+
builder.reductionGearbox();
17+
// 防护罩
18+
builder.hood();
19+
// 手柄
20+
builder.handle();
21+
// 开关
22+
builder.switches();
23+
// 插头
24+
builder.plug();
25+
// 圆锯片
26+
builder.circularSaw();
27+
return builder.getChainsaws();
28+
}
29+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.lzw.part1_creation_mode.builder.chainsaw;
2+
3+
/**
4+
* 测试类
5+
*/
6+
public class Test {
7+
8+
public static void main(String[] args) {
9+
10+
HardwareStoreBoss hardwareStoreBoss = new HardwareStoreBoss();
11+
12+
Chainsaws chainsaws = hardwareStoreBoss.notify(new ChainsawBuilderImpl());
13+
System.out.println(chainsaws.toString());
14+
15+
// 新链锯
16+
Chainsaws chainsaws2 = hardwareStoreBoss.notify(new ChainsawBuilderImpl2());
17+
System.out.println(chainsaws2.toString());
18+
}
19+
20+
21+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.lzw.part1_creation_mode.builder.chainsaw2;
2+
3+
/**
4+
* 链锯建筑者
5+
*/
6+
public interface ChainsawBuilder {
7+
8+
// 蓄电池
9+
ChainsawBuilder battery(String name);
10+
// 电动机
11+
ChainsawBuilder motor(String name);
12+
// 减速箱
13+
ChainsawBuilder reductionGearbox(String name);
14+
// 防护罩
15+
ChainsawBuilder hood(String name);
16+
// 手柄
17+
ChainsawBuilder handle(String name);
18+
// 开关
19+
ChainsawBuilder switches(String name);
20+
// 插头
21+
ChainsawBuilder plug(String name);
22+
// 圆锯片
23+
ChainsawBuilder circularSaw(String name);
24+
25+
// 获取链锯(产品)的实例
26+
Chainsaws getChainsaws();
27+
28+
}

0 commit comments

Comments
 (0)