diff options
Diffstat (limited to 'usth/ICT2.7/P3L3 Design Patterns Subtitles/7 - Strategy Pattern - lang_en_vs5.srt')
-rw-r--r-- | usth/ICT2.7/P3L3 Design Patterns Subtitles/7 - Strategy Pattern - lang_en_vs5.srt | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/usth/ICT2.7/P3L3 Design Patterns Subtitles/7 - Strategy Pattern - lang_en_vs5.srt b/usth/ICT2.7/P3L3 Design Patterns Subtitles/7 - Strategy Pattern - lang_en_vs5.srt deleted file mode 100644 index 288b8d6..0000000 --- a/usth/ICT2.7/P3L3 Design Patterns Subtitles/7 - Strategy Pattern - lang_en_vs5.srt +++ /dev/null @@ -1,143 +0,0 @@ -1 -00:00:00,230 --> 00:00:02,110 -The second pattern I want to discuss is the - -2 -00:00:02,110 --> 00:00:05,050 -strategy pattern, which provides a way to configure a - -3 -00:00:05,050 --> 00:00:07,900 -class with one of many behaviors. What does that - -4 -00:00:07,900 --> 00:00:11,040 -mean? Well, more precisely, this pattern allows for defining - -5 -00:00:11,040 --> 00:00:15,330 -a family of algorithms, encapsulating them into separate classes, - -6 -00:00:15,330 --> 00:00:17,900 -so each algorithm in one class, and making these - -7 -00:00:17,900 --> 00:00:21,490 -classes interchangeable, but providing a common interface for all - -8 -00:00:21,490 --> 00:00:25,350 -the encapsulated algorithms. So in essence, the intent of - -9 -00:00:25,350 --> 00:00:29,250 -a strategy pattern is to allow for switching between - -10 -00:00:29,250 --> 00:00:33,490 -different algorithms for accomplishing a given task. For example, imagine - -11 -00:00:33,490 --> 00:00:36,610 -having different sorting algorithms with different space or time - -12 -00:00:36,610 --> 00:00:38,800 -tradeoffs. You might want to be able to have them - -13 -00:00:38,800 --> 00:00:42,670 -all available and use different ones in different situations. - -14 -00:00:42,670 --> 00:00:44,820 -And this pattern is applicable not only when we have - -15 -00:00:44,820 --> 00:00:47,260 -different variants of an algorithm, but also when we - -16 -00:00:47,260 --> 00:00:51,690 -have many related classes that differ only in their behavior. - -17 -00:00:51,690 --> 00:00:53,640 -So let's get more concrete and see how this is - -18 -00:00:53,640 --> 00:00:55,960 -done. And I'm going to do it as before, by - -19 -00:00:55,960 --> 00:00:59,700 -discussing the structure and the participants for this strategy pattern. - -20 -00:00:59,700 --> 00:01:02,540 -In this case, we have 3 types of participants for this - -21 -00:01:02,540 --> 00:01:07,210 -pattern, the context, the algorithm, and the concrete strategies. There - -22 -00:01:07,210 --> 00:01:09,580 -can be as many as the number of behaviors that - -23 -00:01:09,580 --> 00:01:12,300 -I need to implement. So, let's see what those are. - -24 -00:01:12,300 --> 00:01:16,690 -The context is the interface to the outside world. It maintains - -25 -00:01:16,690 --> 00:01:19,180 -a reference to the current algorithm and allows for - -26 -00:01:19,180 --> 00:01:22,860 -updating this reference at run time. So, basically the outside - -27 -00:01:22,860 --> 00:01:26,370 -world will invoke the functionality provided by the different algorithms, - -28 -00:01:26,370 --> 00:01:29,170 -by using this interface. And depending on which algorithm is - -29 -00:01:29,170 --> 00:01:31,640 -currently selected, that's the one that will be executed when - -30 -00:01:31,640 --> 00:01:35,920 -the functionality is involved. The algorithm, also called the strategy, - -31 -00:01:35,920 --> 00:01:37,970 -so that's where the pattern gets its name, Is the - -32 -00:01:37,970 --> 00:01:42,130 -common interface for the different algorithims. So all the algorithms - -33 -00:01:42,130 --> 00:01:46,690 -implement this interface. Finally, the concrete strategies are the - -34 -00:01:46,690 --> 00:01:49,920 -actual implementations of the algorithms. So if I have 10 - -35 -00:01:49,920 --> 00:01:53,030 -different variants of my algorithm, I will implement 10 different - -36 -00:01:53,030 --> 00:01:56,550 -concrete strategies. They will all be implementations of this interface. |