From 8a7dfa0972c83fd811a4296e7373574bea4a28d0 Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Sun, 19 Jul 2020 20:34:40 +0700 Subject: [usth/ICT2.7] Remove Udacity transcribes --- .../9 - Other Common Patterns - lang_en_vs5.srt | 295 --------------------- 1 file changed, 295 deletions(-) delete mode 100644 usth/ICT2.7/P3L3 Design Patterns Subtitles/9 - Other Common Patterns - lang_en_vs5.srt (limited to 'usth/ICT2.7/P3L3 Design Patterns Subtitles/9 - Other Common Patterns - lang_en_vs5.srt') diff --git a/usth/ICT2.7/P3L3 Design Patterns Subtitles/9 - Other Common Patterns - lang_en_vs5.srt b/usth/ICT2.7/P3L3 Design Patterns Subtitles/9 - Other Common Patterns - lang_en_vs5.srt deleted file mode 100644 index 756f38f..0000000 --- a/usth/ICT2.7/P3L3 Design Patterns Subtitles/9 - Other Common Patterns - lang_en_vs5.srt +++ /dev/null @@ -1,295 +0,0 @@ -1 -00:00:00,060 --> 00:00:03,460 -Before concluding this lesson, let's look at a few more patterns. And - -2 -00:00:03,460 --> 00:00:05,880 -although it will take too long to cover them in detail, I - -3 -00:00:05,880 --> 00:00:08,986 -would like to at least mention and quickly discuss a few more - -4 -00:00:08,986 --> 00:00:12,080 -of these more commonly-used patterns. In fact, some of the patterns that - -5 -00:00:12,080 --> 00:00:15,400 -I will discuss, you might have used yourself. Maybe without knowing their - -6 -00:00:15,400 --> 00:00:18,300 -name or the fact that they were design patterns. So let's start - -7 -00:00:18,300 --> 00:00:21,660 -with a Visitor pattern, which is a way of separating an algorithm - -8 -00:00:21,660 --> 00:00:25,150 -from an object structure on which it operates. And a practical result - -9 -00:00:25,150 --> 00:00:28,010 -of this separation is the ability to add the new operation - -10 -00:00:28,010 --> 00:00:31,680 -to exist in object structures, without modifying the structures. So, basically - -11 -00:00:31,680 --> 00:00:34,540 -what this pattern does, is to allow for defining and easily - -12 -00:00:34,540 --> 00:00:37,870 -modifying set of operations to perform on the objects of the collection. - -13 -00:00:37,870 --> 00:00:40,570 -And the typical usage of this is, for example, when you're - -14 -00:00:40,570 --> 00:00:43,140 -visiting a graph, or a set of objects, and you want - -15 -00:00:43,140 --> 00:00:46,090 -to perform some operations on these objects. By using a visitor - -16 -00:00:46,090 --> 00:00:48,410 -pattern, you can decouple the operation - -17 -00:00:48,410 --> 00:00:50,830 -from the objects. Although not straightforward, - -18 -00:00:50,830 --> 00:00:53,360 -this pattern is very, very useful. So, I really encourage you - -19 -00:00:53,360 --> 00:00:56,060 -to look at it in more detail and get familiar with it. - -20 -00:00:56,060 --> 00:00:59,040 -The second pattern I want to mention is the decorator pattern. - -21 -00:00:59,040 --> 00:01:02,820 -The decorator pattern is basically a wrapper that adds functionality to a - -22 -00:01:02,820 --> 00:01:05,030 -class. So the way in which it works, is that you - -23 -00:01:05,030 --> 00:01:08,230 -will take a class, you will build a class that basically wraps - -24 -00:01:08,230 --> 00:01:12,250 -this class. So it reproduces the functionality of the original class, but - -25 -00:01:12,250 --> 00:01:15,900 -it also adds some functionality. And for all the functionality that was - -26 -00:01:15,900 --> 00:01:18,750 -already in the original class, it will simply invoke this - -27 -00:01:18,750 --> 00:01:21,080 -functionality and for the new one, you will implement it - -28 -00:01:21,080 --> 00:01:24,510 -using the services of the class. And a nice property - -29 -00:01:24,510 --> 00:01:26,760 -of the decorator pattern is that it's stackable. So you can - -30 -00:01:26,760 --> 00:01:30,210 -add decorators on decorators on decorators, and further increase the - -31 -00:01:30,210 --> 00:01:34,052 -functionality provided by your class. The iterator is another very - -32 -00:01:34,052 --> 00:01:37,810 -commonly-used pattern. And, you probably use this one yourself because, - -33 -00:01:37,810 --> 00:01:41,090 -it's also part of many standard libraries. What the iterator allows - -34 -00:01:41,090 --> 00:01:44,220 -you to do, is basically to access elements of a collection - -35 -00:01:44,220 --> 00:01:47,490 -without knowing the underlying representation. So the iterator will allow you - -36 -00:01:47,490 --> 00:01:50,630 -to just go through a set of objects without worrying about - -37 -00:01:50,630 --> 00:01:53,200 -how the objects are stored. So you basically just ask the - -38 -00:01:53,200 --> 00:01:55,810 -iterator to give you the first object, the next object and - -39 -00:01:55,810 --> 00:02:00,130 -so on. Another very commonly-used pattern is the observer pattern. And - -40 -00:02:00,130 --> 00:02:02,650 -this pattern is very useful when you have an object of - -41 -00:02:02,650 --> 00:02:06,190 -interest and a set of other objects that are interested in - -42 -00:02:06,190 --> 00:02:09,240 -the changes that might occur in this first object. So - -43 -00:02:09,240 --> 00:02:12,690 -what the observer pattern allows you to do is to register - -44 -00:02:12,690 --> 00:02:15,460 -these objects, so that they let the system know that - -45 -00:02:15,460 --> 00:02:18,690 -they're interested in changes in this first object. And then, every - -46 -00:02:18,690 --> 00:02:20,840 -time that there is a change, these other objects will - -47 -00:02:20,840 --> 00:02:23,030 -be automatically notified. So basically, - -48 -00:02:23,030 --> 00:02:25,290 -the observer pattern allows for notifying - -49 -00:02:25,290 --> 00:02:29,310 -dependents when an object of interest changes. If you want - -50 -00:02:29,310 --> 00:02:32,020 -an example of this, just think about the file system and - -51 -00:02:32,020 --> 00:02:35,870 -imagine having a folder. All the views of this folder will - -52 -00:02:35,870 --> 00:02:37,970 -want to be notified every time that there's a change in - -53 -00:02:37,970 --> 00:02:40,720 -the folder because they need to refresh. So instead of continuously - -54 -00:02:40,720 --> 00:02:44,390 -checking the state of the folder, they will just register and basically - -55 -00:02:44,390 --> 00:02:47,430 -say, hey, we're interested in knowing when something changes in this - -56 -00:02:47,430 --> 00:02:50,320 -folder. And when something changes in the folder, they will be automatically - -57 -00:02:50,320 --> 00:02:53,300 -notified. So it will be some sort of a push notification - -58 -00:02:53,300 --> 00:02:56,590 -instead of a pull notification, if you are familiar with that terminology. - -59 -00:02:56,590 --> 00:03:00,020 -Finally the proxy pattern is a pattern in which a surrogate - -60 -00:03:00,020 --> 00:03:04,370 -controls access to an object. In other words, we have our object, - -61 -00:03:04,370 --> 00:03:07,220 -and we have our proxy here. So all the requests to the - -62 -00:03:07,220 --> 00:03:09,950 -object will go through the proxy that will then forward them. And - -63 -00:03:09,950 --> 00:03:12,020 -all the responses from the object will also go through the - -64 -00:03:12,020 --> 00:03:15,580 -proxy. They will then forward them to the original requester. So what - -65 -00:03:15,580 --> 00:03:18,710 -the proxy allows you to do is to control how this object, - -66 -00:03:18,710 --> 00:03:22,180 -that is behind the proxy, is actually accessed, for example, by filtering - -67 -00:03:22,180 --> 00:03:24,500 -some calls. So in a sense, the proxy allows use - -68 -00:03:24,500 --> 00:03:27,470 -for masking some of the functionality of the object that - -69 -00:03:27,470 --> 00:03:31,070 -is behind the proxy. And there's many, many, many more - -70 -00:03:31,070 --> 00:03:34,424 -useful patterns. That can help you when designing and implementing - -71 -00:03:34,424 --> 00:03:37,220 -the system. So once more, I really encourage you to - -72 -00:03:37,220 --> 00:03:38,740 -have a look at the book, to look at the - -73 -00:03:38,740 --> 00:03:41,570 -resources online, and to really get more familiar with these - -74 -00:03:41,570 --> 00:03:43,890 -patterns, and to try to use them in your everyday work. -- cgit 1.4.1