about summary refs log tree commit diff
path: root/usth/ICT2.7/P3L3 Design Patterns Subtitles/5 - Factory Method Pattern - lang_en_vs5.srt
diff options
context:
space:
mode:
Diffstat (limited to 'usth/ICT2.7/P3L3 Design Patterns Subtitles/5 - Factory Method Pattern - lang_en_vs5.srt')
-rw-r--r--usth/ICT2.7/P3L3 Design Patterns Subtitles/5 - Factory Method Pattern - lang_en_vs5.srt179
1 files changed, 179 insertions, 0 deletions
diff --git a/usth/ICT2.7/P3L3 Design Patterns Subtitles/5 - Factory Method Pattern - lang_en_vs5.srt b/usth/ICT2.7/P3L3 Design Patterns Subtitles/5 - Factory Method Pattern - lang_en_vs5.srt
new file mode 100644
index 0000000..c7ebddd
--- /dev/null
+++ b/usth/ICT2.7/P3L3 Design Patterns Subtitles/5 - Factory Method Pattern - lang_en_vs5.srt
@@ -0,0 +1,179 @@
+1

+00:00:00,012 --> 00:00:02,350

+Let's now look at the first design pattern that we

+

+2

+00:00:02,350 --> 00:00:05,700

+will discuss, the factory method pattern. And I'm going to start

+

+3

+00:00:05,700 --> 00:00:09,220

+by discussing the intent of the pattern and its applicability.

+

+4

+00:00:09,220 --> 00:00:12,210

+As far as the intent is concerned, the factory method pattern

+

+5

+00:00:12,210 --> 00:00:16,690

+allows for creating objects without specifying their class, by invoking

+

+6

+00:00:16,690 --> 00:00:19,370

+what we call a factory method. And what that is, is

+

+7

+00:00:19,370 --> 00:00:22,680

+a method whose main goal is to create class instances.

+

+8

+00:00:22,680 --> 00:00:25,510

+So when is this pattern useful? So when is it applicable?

+

+9

+00:00:25,510 --> 00:00:28,080

+For example, it is applicable in cases in which a class

+

+10

+00:00:28,080 --> 00:00:31,890

+cannot anticipate the type of object it must create. That is,

+

+11

+00:00:31,890 --> 00:00:34,800

+the type of an object is not known at compile time,

+

+12

+00:00:34,800 --> 00:00:37,800

+is not known until the code runs. A typical example of

+

+13

+00:00:37,800 --> 00:00:40,500

+this, are frameworks. So if you ever used a framework, you

+

+14

+00:00:40,500 --> 00:00:44,280

+will know that, normally, frameworks only know about interfaces and abstract

+

+15

+00:00:44,280 --> 00:00:47,450

+classes. So the exact type of the objects of these classes

+

+16

+00:00:47,450 --> 00:00:50,840

+is only known at runtime. The second case in which the factory

+

+17

+00:00:50,840 --> 00:00:53,835

+method pattern is applicable, is when a class wants its

+

+18

+00:00:53,835 --> 00:00:57,160

+subclasses to specify the type of objects it creates. And we'll

+

+19

+00:00:57,160 --> 00:00:59,920

+see an example of this in a minute. Finally, factory

+

+20

+00:00:59,920 --> 00:01:03,580

+method patterns are applicable when a class needs control over the

+

+21

+00:01:03,580 --> 00:01:06,760

+creation of its objects. And in this case, one possible

+

+22

+00:01:06,760 --> 00:01:09,380

+example is when there is a limit on the number of

+

+23

+00:01:09,380 --> 00:01:12,930

+objects that can be created. Special example, it's a singleton. If

+

+24

+00:01:12,930 --> 00:01:15,840

+you're familiar with a singleton, a singleton is a class for

+

+25

+00:01:15,840 --> 00:01:18,930

+which only one instance can be created. The factory method pattern

+

+26

+00:01:18,930 --> 00:01:21,760

+is perfect in these cases, because it allows to control how many

+

+27

+00:01:21,760 --> 00:01:24,640

+objects get created. So in this case, it would allow the creation

+

+28

+00:01:24,640 --> 00:01:27,290

+only of a single object. And from the second time that it

+

+29

+00:01:27,290 --> 00:01:30,040

+is invoked, it will just return the object that was previously

+

+30

+00:01:30,040 --> 00:01:33,700

+created. Now let's go ahead and see how this pattern actually works,

+

+31

+00:01:33,700 --> 00:01:37,100

+and let's do that by discussing the structure and the participants for

+

+32

+00:01:37,100 --> 00:01:41,330

+the pattern. The structure that is represented here, using the UML notation,

+

+33

+00:01:41,330 --> 00:01:45,530

+includes three classes, the Creator, the ConcreteCreator,

+

+34

+00:01:45,530 --> 00:01:48,000

+and the Product. The Creator provides the

+

+35

+00:01:48,000 --> 00:01:50,710

+interface for the factory method. So this

+

+36

+00:01:50,710 --> 00:01:53,200

+here, is the interface for the factory method

+

+37

+00:01:53,200 --> 00:01:55,950

+that, when invoked, returns an object of

+

+38

+00:01:55,950 --> 00:01:59,440

+type Product. The ConcreteCreator provides the actual

+

+39

+00:01:59,440 --> 00:02:02,350

+method for creating the Product. So this

+

+40

+00:02:02,350 --> 00:02:06,170

+method is a concrete implementation of this interface.

+

+41

+00:02:06,170 --> 00:02:10,630

+Finally, the Product is the object created by the factory method. So

+

+42

+00:02:10,630 --> 00:02:12,350

+summarizing, we have the interface for

+

+43

+00:02:12,350 --> 00:02:14,300

+the factory method, the actual implementation of

+

+44

+00:02:14,300 --> 00:02:17,540

+the summary method, and the object that is created by the factory method,

+

+45

+00:02:17,540 --> 00:02:21,020

+when it is invoked. So let's look at an example of this pattern.