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

-00:00:00,220 --> 00:00:03,260

-The example I'm going to use consists of a class called

-

-2

-00:00:03,260 --> 00:00:07,380

-ImageReaderFactory which provides the factory method which is this one;

-

-3

-00:00:07,380 --> 00:00:10,250

-createImageReader. As you can see the method takes an InputStream

-

-4

-00:00:10,250 --> 00:00:13,570

-as input and returns an object of type ImageReader, and it's

-

-5

-00:00:13,570 --> 00:00:15,645

-static so that we can invoke it even if we

-

-6

-00:00:15,645 --> 00:00:18,390

-don't have an instance of the ImageReaderFactory. So what does the

-

-7

-00:00:18,390 --> 00:00:22,275

-method do? Well the method first invokes, getImageType, passing the

-

-8

-00:00:22,275 --> 00:00:25,780

-InputStream as a parameter and this method figures out the type

-

-9

-00:00:25,780 --> 00:00:28,820

-of the image that is stored in this Inputstream and it's

-

-10

-00:00:28,820 --> 00:00:32,740

-an integer. Then, based on the value of this integer, the

-

-11

-00:00:32,740 --> 00:00:35,352

-method does one of several things. If the image type is

-

-12

-00:00:35,352 --> 00:00:38,970

-a GIF, it will invoke the constructor for GifReader passing the

-

-13

-00:00:38,970 --> 00:00:41,610

-stream as a parameter. And what will happen is that the

-

-14

-00:00:41,610 --> 00:00:44,450

-GIF reader will read a GIF from the stream, create a

-

-15

-00:00:44,450 --> 00:00:47,887

-corresponding object and return it. So in this case, the ImageReader

-

-16

-00:00:47,887 --> 00:00:51,460

-object return will be the object representing a GIF as appropriate.

-

-17

-00:00:51,460 --> 00:00:54,610

-Similarly, if the image type is JPEG, then the method will

-

-18

-00:00:54,610 --> 00:00:58,579

-invoke the constructor for JPEG Reader and in this case, this constructor

-

-19

-00:00:58,579 --> 00:01:01,981

-will read from the stream a JPEG, create a corresponding object

-

-20

-00:01:01,981 --> 00:01:05,640

-and return it. And so on for different types of images. So

-

-21

-00:01:05,640 --> 00:01:07,880

-why is this a situation in which it is appropriate to

-

-22

-00:01:07,880 --> 00:01:11,100

-use the factory method pattern? One, because it corresponds exactly to the

-

-23

-00:01:11,100 --> 00:01:14,250

-cases that we saw before, of applicability. This is a case

-

-24

-00:01:14,250 --> 00:01:16,560

-in which we don't know the type of the object that we

-

-25

-00:01:16,560 --> 00:01:20,080

-need to create until we run the code, because it depends

-

-26

-00:01:20,080 --> 00:01:22,530

-on the value of the InputStream. It depends on the content

-

-27

-00:01:22,530 --> 00:01:25,590

-of the InputStream. So, until we read the InputStream, we cannot

-

-28

-00:01:25,590 --> 00:01:28,380

-figure out whether we need to create a GIF, a JPEG or

-

-29

-00:01:28,380 --> 00:01:30,780

-some other type of image. So in this case, we want to

-

-30

-00:01:30,780 --> 00:01:33,630

-do, we want to simply delegate to this classes the creation of

-

-31

-00:01:33,630 --> 00:01:35,610

-the object, once we know what type of object needs to

-

-32

-00:01:35,610 --> 00:01:38,790

-be created. So perfect example of application of a factory method pattern.