-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathResearchPaper.java
More file actions
77 lines (66 loc) · 1.55 KB
/
Copy pathResearchPaper.java
File metadata and controls
77 lines (66 loc) · 1.55 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
interface ResearchPaper
{
void view();
}
class FullResearchPaper implements ResearchPaper
{
private String pdfPath;
private String authorName;
public FullResearchPaper(String pdfPath)
{
this.pdfPath = pdfPath;
loadPdf();
}
public String getAuthorName() {
return authorName;
}
private void loadPdf()
{
System.out.println("Loading entire PDF from: " + pdfPath);
}
@Override
public void view()
{
System.out.println("Viewing PDF: " + pdfPath);
}
}
class LazyResearchPaper implements ResearchPaper
{
private String pdfPath;
private boolean loaded = false;
public LazyResearchPaper(String pdfPath)
{
this.pdfPath = pdfPath;
}
private void loadPdf()
{
System.out.println("Loading entire PDF from: " + pdfPath);
loaded = true;
}
@Override
public void view()
{
if (!loaded)
{
loadPdf();
}
System.out.println("Viewing PDF: " + pdfPath);
}
}
class Main {
public static void main(String[] args)
{
ResearchPaper[] papers = {
new FullResearchPaper("paper1.pdf"),
new LazyResearchPaper("paper2.pdf"),
new LazyResearchPaper("paper3.pdf")
};
System.out.println("Browsing papers...");
for (int i = 0; i < papers.length; i++)
{
System.out.println("Paper " + (i + 1));
}
System.out.println("\nOpening paper 2:");
papers[1].view();
}
}