-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
139 lines (98 loc) · 6.43 KB
/
Solution.java
File metadata and controls
139 lines (98 loc) · 6.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
//I myself am also persuaded about you, my brothers, that you yourselves are full of goodness, filled with all knowledge, able also to admonish others. (Romans 15:14)
---------------------------------------------Solution.java----------------------------------------------------------------------
package com.javarush.task.task16.task1631;
import com.javarush.task.task16.task1631.common.ImageReader;
import com.javarush.task.task16.task1631.common.ImageTypes;
public class Solution {
public static void main(String[] args) {
ImageReader reader = ImageReaderFactory.getImageReader(ImageTypes.JPG);
}
}
--------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------ImageReader.java-------------------------------------------------------------------
package com.javarush.task.task16.task1631.common;
public interface ImageReader {
}
--------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------ImageTypes.java--------------------------------------------------------------------
package com.javarush.task.task16.task1631.common;
public enum ImageTypes {
BMP,
JPG,
PNG
}
--------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------ImageReaderFactory.java-----------------------------------------------------------
package com.javarush.task.task16.task1631;
import com.javarush.task.task16.task1631.common.*;
public class ImageReaderFactory {
public static ImageReader getImageReader(ImageTypes type) {
if (type == ImageTypes.BMP) {
return new BmpReader();
} else if (type == ImageTypes.JPG) {
return new JpgReader();
} else if (type == ImageTypes.PNG) {
return new PngReader();
} else {
throw new IllegalArgumentException("Неизвестный тип картинки");
}
}
}
--------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------JpgReader.java--------------------------------------------------------------------
package com.javarush.task.task16.task1631.common;
public class JpgReader implements ImageReader {
}
--------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------PngReader.java-------------------------------------------------------------------
package com.javarush.task.task16.task1631.common;
public class PngReader implements ImageReader {
}
--------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------BmpReader.java-------------------------------------------------------------------
package com.javarush.task.task16.task1631.common;
public class BmpReader implements ImageReader {
}
--------------------------------------------------------------------------------------------------------------------------------
/*
Factory method pattern
1. Внимательно посмотри, какие классы у тебя есть.
2. В отдельных файлах в пакете common создай классы JpgReader, PngReader, BmpReader, которые реализуют интерфейс ImageReader.
3. В отдельном файле в основном пакете создай класс ImageReaderFactory с одним методом.
3.1. Подумай, как он должен называться.
3.2. Подумай, какие модификаторы должны быть у этого метода.
4. Этот метод должен:
4.1. Для каждого значения из ImageTypes возвращать соответствующий Reader, например, для ImageTypes.JPG — JpgReader;
4.2. Если передан неправильный параметр, то выбрасывать исключение IllegalArgumentException(«Неизвестный тип картинки«).
Требования:
1. Создай в пакете common класс JpgReader, реализующий интерфейс ImageReader.
2. Создай в пакете common класс PngReader, реализующий интерфейс ImageReader.
3. Создай в пакете common класс BmpReader, реализующий интерфейс ImageReader.
4. Создай публичный класс ImageReaderFactory.
5. Добавь в класс ImageReaderFactory открытый статический метод getImageReader с параметром ImageTypes.
6. Метод getImageReader должен создавать и возвращать подходящий Reader.
7. Метод getImageReader должен кидать исключение IllegalArgumentException, если передан неправильный параметр.
---------------------------------------------Solution.java----------------------------------------------------------------------
package com.javarush.task.task16.task1631;
import com.javarush.task.task16.task1631.common.ImageReader;
import com.javarush.task.task16.task1631.common.ImageTypes;
public class Solution {
public static void main(String[] args) {
ImageReader reader = ImageReaderFactory.getImageReader(ImageTypes.JPG);
}
}
--------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------ImageReader.java-------------------------------------------------------------------
package com.javarush.task.task16.task1631.common;
public interface ImageReader {
}
--------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------ImageTypes.java--------------------------------------------------------------------
package com.javarush.task.task16.task1631.common;
public enum ImageTypes {
BMP,
JPG,
PNG
}
--------------------------------------------------------------------------------------------------------------------------------
*/