We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
《大话数据结构》开源项目是基于C#的设计模式图书,通过生动活泼的例子,详细介绍了23个设计模式。本书读起来轻松诙谐,让读者在不知不觉中感受到设计的魅力。
项目地址:https://github.com/datawhalechina/sweetalk-design-pattern
设计模式是一名优秀的程序员必修的功课,它不仅仅是理论知识,更是需要在实际中不断实践、反思。如果想要写出优雅、健壮的代码和软件,设计模式绝对是绕不开的主题。
本项目主要面对以下人群:
的之前不懂或没听过设计模式的程序员。
本项目特色如下:
第 1 章 代码无错就是优?—— 简单工厂模式 1 1.1 面试受挫 1 1.2 初学者代码毛病 2 1.3 代码规范 2 1.4 面向对象编程 4 1.5 活字印刷,面向对象 4 1.6 面向对象的好处 5 1.7 复制 vs. 复用 6 1.8 业务的封装 6 1.9 紧耦合 vs. 松耦合 8 1.10 简单工厂模式 10 1.11 UML 类图 12 第 2 章 商场促销 —— 策略模式 17 2.1 商场收银软件 17 2.2 增加打折 18 2.3 简单工厂实现 19 2.4 策略模式 22 2.5 策略模式实现 25 2.6 策略与简单工厂结合 27 2.7 策略模式解析 28 第 3 章 拍摄 UFO—— 单一职责原则 30 3.1 新手机 30 3.2 拍摄 30 3.3 没用的东西 31 3.4 单一职责原则 31 3.5 方块游戏的设计 31 3.6 手机职责过多吗? 33 第 4 章 考研求职两不误 —— 开放 - 封闭原则 34 4.1 考研失败 34 4.2 开放 - 封闭原则 35 4.3 何时应对变化 36 4.4 两手准备,并全力以赴 37 第 5 章 会修电脑不会修收音机?—— 依赖倒转原则 38 5.1 MM 请求修电脑 38 5.2 电话遥控修电脑 39 5.3 依赖倒转原则 40 5.4 里氏代换原则 41 5.5 修收音机 43 第 6 章 穿什么有这么重要?—— 装饰模式 44 6.1 穿什么有这么重要? 44 6.2 小菜扮靓第一版 45 6.3 小菜扮靓第二版 47 6.4 装饰模式 50 6.5 小菜扮靓第三版 53 6.6 装饰模式总结 56 第 7 章 为别人做嫁衣 —— 代理模式 57 7.1 为别人做嫁衣! 57 7.2 没有代理的代码 58 7.3 只有代理的代码 60 7.4 符合实际的代码 61 7.5 代理模式 63 7.6 代理模式应用 65 7.7 秀才让小六代其求婚 66 第 8 章 雷锋依然在人间 —— 工厂方法模式 67 8.1 再现活雷锋 67 8.2 简单工厂模式实现 68 8.3 工厂方法模式实现 69 8.4 简单工厂 vs. 工厂方法 71 8.5 雷锋工厂 72 第 9 章 简历复印 —— 原型模式 77 9.1 夸张的简历 77 9.2 简历代码初步实现 78 9.3 原型模式 80 9.4 简历的原型实现 82 9.5 浅复制与深复制 84 9.6 简历的深复制实现 87 9.7 复制简历 vs. 手写求职信 89 第 10 章 考题抄错会做也白搭 —— 模板方法模式 90 10.1 选择题不会做,蒙呗! 90 10.2 重复 = 易错 + 难改 91 10.3 提炼代码 93 10.4 模板方法模式 96 10.5 模板方法模式特点 98 10.6 主观题,看你怎么蒙 98 第 11 章 无熟人难办事?—— 迪米特法则 100 11.1 第一天上班 100 11.2 无熟人难办事 100 11.3 迪米特法则 102 第 12 章 牛市股票还会亏钱?—— 外观模式 103 12.1 牛市股票还会亏钱? 103 12.2 股民炒股代码 104 12.3 投资基金代码 106 12.4 外观模式 108 12.5 何时使用外观模式 110 第 13 章 好菜每回味不同 —— 建造者模式 112 13.1 炒面没放盐 112 13.2 建造小人一 113 13.3 建造小人二 114 13.4 建造者模式 115 13.5 建造者模式解析 118 13.6 建造者模式基本代码 119 第 14 章 老板回来,我不知道 —— 观察者模式 123 14.1 老板回来?我不知道! 123 14.2 双向耦合的代码 124 14.3 解耦实践一 126 14.4 解耦实践二 128 14.5 观察者模式 131 14.6 观察者模式特点 134 14.7 观察者模式的不足 135 14.8 事件委托实现 136 14.9 事件委托说明 139 14.10 石守吉失手机后的委托 140 第 15 章 就不能不换 DB 吗?—— 抽象工厂模式 141 15.1 就不能不换 DB 吗? 141 15.2 最基本的数据访问程序 142 15.3 用了工厂方法模式的数据访问程序 143 15.4 用了抽象工厂模式的数据访问程序 146 15.5 抽象工厂模式 149 15.6 抽象工厂模式的优点与缺点 151 15.7 用简单工厂来改进抽象工厂 151 15.8 用反射 + 抽象工厂的数据访问程序 154 15.9 用反射 + 配置文件实现数据访问程序 157 15.10 无痴迷,不成功 157 第 16 章 无尽加班何时休 —— 状态模式 158 16.1 加班,又是加班! 158 16.2 工作状态 - 函数版 159 16.3 工作状态 - 分类版 160 16.4 方法过长是坏味道 162 16.5 状态模式 163 16.6 状态模式好处与用处 165 16.7 工作状态 - 状态模式版 166 第 17 章 在 NBA 我需要翻译 —— 适配器模式 171 17.1 在 NBA 我需要翻译! 171 17.2 适配器模式 171 17.3 何时使用适配器模式 174 17.4 篮球翻译适配器 174 17.5 适配器模式的.NET 应用 178 17.6 扁鹊的医术 178 第 18 章 如果再回到从前 —— 备忘录模式 180 18.1 如果再给我一次机会…… 180 18.2 游戏存进度 180 18.3 备忘录模式 183 18.4 备忘录模式基本代码 184 18.5 游戏进度备忘 186 第 19 章 分公司 = 一部门 —— 组合模式 189 19.1 分公司不就是一部门吗? 189 19.2 组合模式 190 19.3 透明方式与安全方式 193 19.4 何时使用组合模式 194 19.5 公司管理系统 194 19.6 组合模式好处 198 第 20 章 想走?可以!先买票 —— 迭代器模式 200 20.1 乘车买票,不管你是谁! 200 20.2 迭代器模式 201 20.3 迭代器实现 202 20.4 .NET 的迭代器实现 206 20.5 迭代高手 208 第 21 章 有些类也需计划生育 —— 单例模式 209 21.1 类也需要计划生育 209 21.2 判断对象是否是 null 210 21.3 生还是不生是自己的责任 213 21.4 单例模式 214 21.5 多线程时的单例 216 21.6 双重锁定 217 21.7 静态初始化 218 第 22 章 手机软件何时统一 —— 桥接模式 220 22.1 凭什么你的游戏我不能玩 220 22.2 紧耦合的程序演化 221 22.3 合成 / 聚合复用原则 225 22.4 松耦合的程序 226 22.5 桥接模式 229 22.6 桥接模式基本代码 231 22.7 我要开发 “好” 游戏 233 第 23 章 烤羊肉串引来的思考 —— 命令模式 234 23.1 吃烤羊肉串! 234 23.2 烧烤摊 vs. 烧烤店 235 23.3 紧耦合设计 236 23.4 松耦合设计 237 23.5 松耦合后 240 23.6 命令模式 242 23.7 命令模式作用 244 第 24 章 加薪非要老总批?—— 职责链模式 245 24.1 老板,我要加薪! 245 24.2 加薪代码初步 246 24.3 职责链模式 249 24.4 职责链的好处 251 24.5 加薪代码重构 252 24.6 加薪成功 256 第 25 章 世界需要和平 —— 中介者模式 257 25.1 世界需要和平! 257 25.2 中介者模式 258 25.3 安理会做中介 262 25.4 中介者模式优缺点 265 第 26 章 项目多也别傻做 —— 享元模式 267 26.1 项目多也别傻做! 267 26.2 享元模式 269 26.3 网站共享代码 272 26.4 内部状态与外部状态 274 26.5 享元模式应用 277 第 27 章 其实你不懂老板的心 —— 解释器模式 279 27.1 其实你不懂老板的心 279 27.2 解释器模式 280 27.3 解释器模式好处 282 27.4 音乐解释器 283 27.5 音乐解释器实现 284 27.6 料事如神 289 第 28 章 男人和女人 —— 访问者模式 291 28.1 男人和女人! 291 28.2 最简单的编程实现 292 28.3 简单的面向对象实现 293 28.4 用了模式的实现 295 28.5 访问者模式 300 28.6 访问者模式基本代码 301 28.7 比上不足,比下有余 304 第 29 章 OOTV 杯超级模式大赛 —— 模式总结 305 29.1 演讲任务 305 29.2 报名参赛 305 29.3 超模大赛开幕式 306 29.4 创建型模式比赛 309 29.5 结构型模式比赛 314 29.6 行为型模式一组比赛 321 29.7 行为型模式二组比赛 325 29.8 决赛 330 29.9 梦醒时分 333 29.10 没有结束的结尾 334
9月24日晚上中期对接 9月30日之前完成第一版 10月7日之前完成第二版
GitHub: https://github.com/hscspring Wechat: HSC_spring
The text was updated successfully, but these errors were encountered:
申请内测:
内测用户的要求:不熟悉或没听过设计模式,且
内测任务:
内测结束时间:
预计一周三个模式,大致需要 2 个月时间,到元旦结束
Sorry, something went wrong.
finlay-liu
Sm1les
qiwang067
mba1398
andongBlue
GYHHAHA
ruyiluo
skywateryang
zhanhao93
ZhikangNiu
No branches or pull requests
你是否已经阅读并同意《Datawhale社区贡献协议》?
项目简介
《大话数据结构》开源项目是基于C#的设计模式图书,通过生动活泼的例子,详细介绍了23个设计模式。本书读起来轻松诙谐,让读者在不知不觉中感受到设计的魅力。
项目地址:https://github.com/datawhalechina/sweetalk-design-pattern
立项理由
设计模式是一名优秀的程序员必修的功课,它不仅仅是理论知识,更是需要在实际中不断实践、反思。如果想要写出优雅、健壮的代码和软件,设计模式绝对是绕不开的主题。
项目受众
本项目主要面对以下人群:
的之前不懂或没听过设计模式的程序员。
项目亮点
本项目特色如下:
项目规划
1.目录
第 1 章 代码无错就是优?—— 简单工厂模式 1
1.1 面试受挫 1
1.2 初学者代码毛病 2
1.3 代码规范 2
1.4 面向对象编程 4
1.5 活字印刷,面向对象 4
1.6 面向对象的好处 5
1.7 复制 vs. 复用 6
1.8 业务的封装 6
1.9 紧耦合 vs. 松耦合 8
1.10 简单工厂模式 10
1.11 UML 类图 12
第 2 章 商场促销 —— 策略模式 17
2.1 商场收银软件 17
2.2 增加打折 18
2.3 简单工厂实现 19
2.4 策略模式 22
2.5 策略模式实现 25
2.6 策略与简单工厂结合 27
2.7 策略模式解析 28
第 3 章 拍摄 UFO—— 单一职责原则 30
3.1 新手机 30
3.2 拍摄 30
3.3 没用的东西 31
3.4 单一职责原则 31
3.5 方块游戏的设计 31
3.6 手机职责过多吗? 33
第 4 章 考研求职两不误 —— 开放 - 封闭原则 34
4.1 考研失败 34
4.2 开放 - 封闭原则 35
4.3 何时应对变化 36
4.4 两手准备,并全力以赴 37
第 5 章 会修电脑不会修收音机?—— 依赖倒转原则 38
5.1 MM 请求修电脑 38
5.2 电话遥控修电脑 39
5.3 依赖倒转原则 40
5.4 里氏代换原则 41
5.5 修收音机 43
第 6 章 穿什么有这么重要?—— 装饰模式 44
6.1 穿什么有这么重要? 44
6.2 小菜扮靓第一版 45
6.3 小菜扮靓第二版 47
6.4 装饰模式 50
6.5 小菜扮靓第三版 53
6.6 装饰模式总结 56
第 7 章 为别人做嫁衣 —— 代理模式 57
7.1 为别人做嫁衣! 57
7.2 没有代理的代码 58
7.3 只有代理的代码 60
7.4 符合实际的代码 61
7.5 代理模式 63
7.6 代理模式应用 65
7.7 秀才让小六代其求婚 66
第 8 章 雷锋依然在人间 —— 工厂方法模式 67
8.1 再现活雷锋 67
8.2 简单工厂模式实现 68
8.3 工厂方法模式实现 69
8.4 简单工厂 vs. 工厂方法 71
8.5 雷锋工厂 72
第 9 章 简历复印 —— 原型模式 77
9.1 夸张的简历 77
9.2 简历代码初步实现 78
9.3 原型模式 80
9.4 简历的原型实现 82
9.5 浅复制与深复制 84
9.6 简历的深复制实现 87
9.7 复制简历 vs. 手写求职信 89
第 10 章 考题抄错会做也白搭 —— 模板方法模式 90
10.1 选择题不会做,蒙呗! 90
10.2 重复 = 易错 + 难改 91
10.3 提炼代码 93
10.4 模板方法模式 96
10.5 模板方法模式特点 98
10.6 主观题,看你怎么蒙 98
第 11 章 无熟人难办事?—— 迪米特法则 100
11.1 第一天上班 100
11.2 无熟人难办事 100
11.3 迪米特法则 102
第 12 章 牛市股票还会亏钱?—— 外观模式 103
12.1 牛市股票还会亏钱? 103
12.2 股民炒股代码 104
12.3 投资基金代码 106
12.4 外观模式 108
12.5 何时使用外观模式 110
第 13 章 好菜每回味不同 —— 建造者模式 112
13.1 炒面没放盐 112
13.2 建造小人一 113
13.3 建造小人二 114
13.4 建造者模式 115
13.5 建造者模式解析 118
13.6 建造者模式基本代码 119
第 14 章 老板回来,我不知道 —— 观察者模式 123
14.1 老板回来?我不知道! 123
14.2 双向耦合的代码 124
14.3 解耦实践一 126
14.4 解耦实践二 128
14.5 观察者模式 131
14.6 观察者模式特点 134
14.7 观察者模式的不足 135
14.8 事件委托实现 136
14.9 事件委托说明 139
14.10 石守吉失手机后的委托 140
第 15 章 就不能不换 DB 吗?—— 抽象工厂模式 141
15.1 就不能不换 DB 吗? 141
15.2 最基本的数据访问程序 142
15.3 用了工厂方法模式的数据访问程序 143
15.4 用了抽象工厂模式的数据访问程序 146
15.5 抽象工厂模式 149
15.6 抽象工厂模式的优点与缺点 151
15.7 用简单工厂来改进抽象工厂 151
15.8 用反射 + 抽象工厂的数据访问程序 154
15.9 用反射 + 配置文件实现数据访问程序 157
15.10 无痴迷,不成功 157
第 16 章 无尽加班何时休 —— 状态模式 158
16.1 加班,又是加班! 158
16.2 工作状态 - 函数版 159
16.3 工作状态 - 分类版 160
16.4 方法过长是坏味道 162
16.5 状态模式 163
16.6 状态模式好处与用处 165
16.7 工作状态 - 状态模式版 166
第 17 章 在 NBA 我需要翻译 —— 适配器模式 171
17.1 在 NBA 我需要翻译! 171
17.2 适配器模式 171
17.3 何时使用适配器模式 174
17.4 篮球翻译适配器 174
17.5 适配器模式的.NET 应用 178
17.6 扁鹊的医术 178
第 18 章 如果再回到从前 —— 备忘录模式 180
18.1 如果再给我一次机会…… 180
18.2 游戏存进度 180
18.3 备忘录模式 183
18.4 备忘录模式基本代码 184
18.5 游戏进度备忘 186
第 19 章 分公司 = 一部门 —— 组合模式 189
19.1 分公司不就是一部门吗? 189
19.2 组合模式 190
19.3 透明方式与安全方式 193
19.4 何时使用组合模式 194
19.5 公司管理系统 194
19.6 组合模式好处 198
第 20 章 想走?可以!先买票 —— 迭代器模式 200
20.1 乘车买票,不管你是谁! 200
20.2 迭代器模式 201
20.3 迭代器实现 202
20.4 .NET 的迭代器实现 206
20.5 迭代高手 208
第 21 章 有些类也需计划生育 —— 单例模式 209
21.1 类也需要计划生育 209
21.2 判断对象是否是 null 210
21.3 生还是不生是自己的责任 213
21.4 单例模式 214
21.5 多线程时的单例 216
21.6 双重锁定 217
21.7 静态初始化 218
第 22 章 手机软件何时统一 —— 桥接模式 220
22.1 凭什么你的游戏我不能玩 220
22.2 紧耦合的程序演化 221
22.3 合成 / 聚合复用原则 225
22.4 松耦合的程序 226
22.5 桥接模式 229
22.6 桥接模式基本代码 231
22.7 我要开发 “好” 游戏 233
第 23 章 烤羊肉串引来的思考 —— 命令模式 234
23.1 吃烤羊肉串! 234
23.2 烧烤摊 vs. 烧烤店 235
23.3 紧耦合设计 236
23.4 松耦合设计 237
23.5 松耦合后 240
23.6 命令模式 242
23.7 命令模式作用 244
第 24 章 加薪非要老总批?—— 职责链模式 245
24.1 老板,我要加薪! 245
24.2 加薪代码初步 246
24.3 职责链模式 249
24.4 职责链的好处 251
24.5 加薪代码重构 252
24.6 加薪成功 256
第 25 章 世界需要和平 —— 中介者模式 257
25.1 世界需要和平! 257
25.2 中介者模式 258
25.3 安理会做中介 262
25.4 中介者模式优缺点 265
第 26 章 项目多也别傻做 —— 享元模式 267
26.1 项目多也别傻做! 267
26.2 享元模式 269
26.3 网站共享代码 272
26.4 内部状态与外部状态 274
26.5 享元模式应用 277
第 27 章 其实你不懂老板的心 —— 解释器模式 279
27.1 其实你不懂老板的心 279
27.2 解释器模式 280
27.3 解释器模式好处 282
27.4 音乐解释器 283
27.5 音乐解释器实现 284
27.6 料事如神 289
第 28 章 男人和女人 —— 访问者模式 291
28.1 男人和女人! 291
28.2 最简单的编程实现 292
28.3 简单的面向对象实现 293
28.4 用了模式的实现 295
28.5 访问者模式 300
28.6 访问者模式基本代码 301
28.7 比上不足,比下有余 304
第 29 章 OOTV 杯超级模式大赛 —— 模式总结 305
29.1 演讲任务 305
29.2 报名参赛 305
29.3 超模大赛开幕式 306
29.4 创建型模式比赛 309
29.5 结构型模式比赛 314
29.6 行为型模式一组比赛 321
29.7 行为型模式二组比赛 325
29.8 决赛 330
29.9 梦醒时分 333
29.10 没有结束的结尾 334
2.各章节负责人
3.各章节预估完成日期
9月24日晚上中期对接
9月30日之前完成第一版
10月7日之前完成第二版
项目负责人
GitHub: https://github.com/hscspring
Wechat: HSC_spring
备注:发起立项申请后DOPMC将会在 72h 之内给出答复,如超时未答复请添加DOPMC负责人微信(微信号:at-Sm1les)问询~
The text was updated successfully, but these errors were encountered: