跟读练习: What are Design Patterns? | Introduction to Design Patterns and Principles | Geekific - 通过视频学习英语口语
选择练习模式
每种模式都会打开全屏练习室。
11 句
如果句子过短或过长,请点击 Edit 进行调整。
1
What's up geeks and welcome to the channel! If you're in the computer science domain you definitely have heard of design patterns before or even used a few patterns in practice with or without your knowledge but really what are design patterns?
2
why were they created in the first place and who decided to create them?
3
what is actually the main purpose behind design patterns?
4
all these questions and more will be answered in this first video of our design pattern series to which later we will add more videos detailing each pattern on its own.
5
As always and to better understand the concept at hand let's take a practical example and let's imagine a steak. You see I may have imagined a well done steak you may have imagined a medium done one someone else might have imagined a vegan steak, while ordering a steak at a restaurant, each one of us orders it differently we don't all necessarily have to order or eat our steak the same way and yet the cook that is preparing it, will take the same piece of meat or soy in addition to the way or policy of how we like our steak and prepare a delicious meal a different one for each one of us using the same piece of meat as a starting point To compare this to a computer program suppose we have a Chef class with a prepare() method This method can take a WellDoneInstruction object and in this prepare method the chef will know how to prepare a well-done steak but what about other ways of preparing a steak we will have to overload this method to take in a MediumDoneInstruction and a VeganInstruction Okay now our chef knows how to cook all the steaks we want Let's say this chef extended his knowledge and now knows of five additional ways to cook a steak should we add five more methods? Well let me suggest something else, why not replace all these methods with a single method that takes a steak cooking instruction and let all these classes inherit this one what do you think?
6
Isn't that a better design for our Chef class You see this way, our class is closed for modification and open for extension which means that not only we won't have to add any more methods nor even touch our Chef class in the future but in addition to this when a new instruction is needed all we have to do is extend the SteakCookingInstruction class we created with this new instruction and the prepare method will handle it automatically Now because of our design, this chef apparently skyrocketed and decided to open a new branch for the restaurant So every time a new customer enters the restaurant the chef goes ahead and informs them of the opening date and details for the new branch but do you think that is the best approach to deal with such a scenario?
7
Don't you think that instead of waiting for people to come in the chef should have instead messaged all his customers the details about the opening or even posted on social media and those interested would have showed up wouldn't his reach be far larger? In both previous scenarios the solutions I suggested hint at a specific pattern this pattern will not actually solve our problem and generate magically ready code for us but rather it will give us a description or template to follow a way of thinking that will help us solve these problems like a series of formalized best practices, steps that programmers have followed and used to solve common problems like the one we just encountered. Design Patterns best became known from the design patterns book by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides often referred to as the Gang of Four book published in the mid 90s.
8
Now, this book details 23 design patterns which were split into three groups: Creational Patterns, Structural Patterns, and Behavioral Patterns.
9
Creational patterns deal with the creation of objects Instead of you instantiating all objects very specifically and explicitly they give you more flexibility in how the objects are actually created Let's suppose that we have a class with 10 attributes but not every time we create an object based on this class we need to specify all 10 attributes sometimes you only need one, in other cases three or two, and sometimes eight or nine, in such cases we are left with two solutions and not quite the best out there: either to create a lot, like a lot, of overloaded constructors for our class or create one constructor that takes all arguments but then we will need to pass as null values the ones we don't require upon creation of our objects Well, design patterns will tell you wait, you have a third option follow the template provided by the Builder Pattern, a template widely used and tested by many developers out there Well if I were in your shoes I'd pick this last option.
10
Structural patterns deal with how classes are actually designed with how things like inheritance and composition and aggregation can be used to provide extra functionality Let's consider that in our application we are storing book objects and these books well there's too many of them, like in the hundred thousand books of a library, or the books in all of amazon online store, and for some reason we need to represent each book by an object You see in this case we will have a bunch of book objects that will share the same attributes and by bunch I mean in the thousands which will have the same author, the same amazon physical storage location, same places it can be delivered to, same provider, etc. you got the idea and maybe the only attribute that will defer is the title itself and the price in some cases So why create for each book an object and consume all this amount of memory while at the same time if we follow the template specified by the Flyweight Pattern we will be able to minimize memory usage by sharing as much data as possible between our similar objects You see that is what design patterns are trying to do they are trying to provide us with a schema, a step-by-step definition or template to help us overcome development or architectural problems that others have faced before us.
11
Finally, Behavioral patterns are specifically concerned with communication and assignment of responsibilities between objects as the program is running The two examples we gave at the beginning of our video can actually be solved using two different behavioral patterns one of them being the Strategy pattern Let's take a second example and suppose we realized that the state of an object in our application will be changed by a lot of other objects but we need to be able to undo the last change Well this can be done in many different ways and you are free to use any of them but there is a Memento design pattern that describes a simple proven approach. So to sum up, design patterns will speed up your development process by providing tested and proven development models At first you may not notice that you require the use of this pattern here or there or you may make use of it without even knowing but with time practice and hopefully with the help of our videos you will! So that's it for this video, I hope it was helpful, thank you guys for watching, take care and I will see you in the next one!
FOR YOU
推荐视频
本课的词汇与口语要点
这节 C1 级别的口语课以视频“What are Design Patterns?”为素材。 视频中反复出现的词有:pattern, object, design, steak, chef。 这段视频共有 11 个句子、1284 个单词可供跟读。 讲话部分时长为 7:17。 说话人语速自然,每分钟约 176 个词,接近日常对话。 85% 的单词属于英语最常用的 3,000 词,其余的词建议在练习前先学一下。 全部 11 个句子中有 7 个是问句,适合练习疑问语调和简短回答。
视频中的重点词汇
视频中最难的 15 个单词,附发音和释义:
| 单词 | 发音 | 释义 |
|---|---|---|
| steak 名词 | /steɪk/ | 牛排 |
| template 名词 | /ˈtɛm.plɪt/ | 模板, 型板 |
| attribute 名词 | /ˈæt.ɹɪˌbjut/ | 屬性 /属性 |
| overload 动词 | /ˌəʊvəˈləʊd/ | 超載 /超载 |
| schema 名词 | /ˈskiːmə/ | 圖式 /图式 |
| skyrocket 动词 | /ˈskaɪˌɹɒk.ɪt/ | 飛漲 /飞涨, 平步青雲 /平步青云 |
| inherit 动词 | /ɪnˈhɛɹɪt/ | 繼承 /继承, 继承 |
| programmer 名词 | /ˈpɹoʊɡɹæmɚ/ | 程序員 /程序员, 程式員 /程式员 |
| undo 动词 | /ʌnˈduː/ | 復原 /复原, 重做 |
| geek 名词 | /ɡiːk/ | 極客 /极客, 宅男 |
| functionality 名词 | 功能, 功能性 | |
| null 名词 | /nʌl/ | 空值 |
| minimize 动词 | /ˈmɪn.ɪˌmaɪz/ | 最小化 |
| inheritance 名词 | /ɪnˈhɛɹɪtəns/ | 繼承 /继承 |
| consume 动词 | /kənˈsum/ | 耗費 /耗费, 消耗 |
视频中出现的短语动词
| 单词 | 发音 | 释义 |
|---|---|---|
| go ahead 动词 | /ˌɡoʊ əˈhɛd/ | 請便 /请便 |
| show up 动词 | 露面 | |
| speed up 动词 | /spiːdˈʌp/ | 加速, 加快 |
视频中的语法
说话人最常用的结构,并附上视频中的原话:
| 结构 | 视频中的用法 |
|---|---|
| 条件句 if + 从句,will/would + 动词 — 条件及其结果 | if I were in your shoes I'd pick |
| 被动语态 be + 过去分词 — 强调发生了什么,而不是谁做的 | will be answered · is closed · were split |
| 现在完成时 have/has + 过去分词 — 过去发生但与现在仍有关联的事 | have heard · have followed · have faced |
| 定语从句 who / which + 从句 — 补充说明人或事物 | extension which means · patterns which were · thousands which will |
需要注意的发音
说话人用了 8 次缩略和弱读形式,例如 don't, I'd, isn't。请按听到的简短形式来说。
- “sh” 和 “zh” 音: aggregation /æɡɹəˈɡeɪʃən/, instantiate /ɪnˈstænʃieɪt/, modification /ˌmɑdɪfɪˈkeɪʃən/
- 长单词——注意重音位置: behavioral /bɪˈheɪvjəɹəl/, aggregation /æɡɹəˈɡeɪʃən/, modification /ˌmɑdɪfɪˈkeɪʃən/, inheritance /ɪnˈhɛɹɪtəns/, architectural /ˌɑɹkɪˈtɛkt͡ʃəɹəl/
中文母语者容易读错的音:
- /v/ — 不要读成 /w/,上齿轻触下唇: behavioral /bɪˈheɪvjəɹəl/, overload /ˌəʊvəˈləʊd/, vegan /ˈviːɡən/
- 词尾辅音 — 要读清楚,后面不要加元音: steak /steɪk/, template /ˈtɛm.plɪt/, attribute /ˈæt.ɹɪˌbjut/, overload /ˌəʊvəˈləʊd/, formalize /ˈfɔɹ.məlaɪːz/
- /r/ 和 /l/ 的区别: behavioral /bɪˈheɪvjəɹəl/, formalize /ˈfɔɹ.məlaɪːz/, architectural /ˌɑɹkɪˈtɛkt͡ʃəɹəl/
如何用这段视频练习
- 先完整听一遍视频,不要开口,记下不认识的单词。
- 先用 0.75 倍速逐句跟读,熟练之后再回到正常速度。
- 录下自己的声音并与原声对比,特别注意 steak, template, attribute 这类单词。
什么是跟读法?
跟读法 (Shadowing) 是一种有科学依据的语言学习技巧,最初开发用于专业口译员的培训,并由多语言者Alexander Arguelles博士普及。这个方法简单而强大:您在听英语母语原声的同时立即大声重复——就像是一个延迟1-2秒紧跟说话者的影子。与被动听力或语法练习不同,跟读法强迫您的大脑和口腔肌肉同时处理并模仿真实的讲话模式。研究表明它能显着提高发音准确性,语调,节奏,连读,听力理解和口语流利度——使其成为雅思口语备考和真实英语交流最有效的方法之一。




![How to Create a Women’s Bodice Block from Body Measurements [Pattern Making Tutorial]](https://img.youtube.com/vi/Bn594SV1nXA/mqdefault.jpg)







