Created
October 15, 2016 19:31
-
-
Save amitguptagwl/82150ee11443f87b271848f0b92c1217 to your computer and use it in GitHub Desktop.
Revisions
-
amitguptagwl created this gist
Oct 15, 2016 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,99 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class VisitorPatternExample { public static void main(String[] args) { List<String> list = new ArrayList<String>(); //list.add("java"); list.add("pdf"); list.add("html"); list.forEach(file -> { FileOperator head = new Head(); FileUtil.fileIdentifier(file).doFileOperation(head); }); } } //Visitable interface ReadableFile { public String readNextLine(); public void doFileOperation(FileOperator operator); } class PdfFile implements ReadableFile { PdfFile(String fileName) { // Create instance of File } public String readNextLine() { return "Reading line from a PDF"; } @Override public void doFileOperation(FileOperator operator) { operator.processPdfFile(this); } public boolean isSecure() { return false; } } class HtmlFile implements ReadableFile { HtmlFile(String fileName) { // Create instance of File } public String readNextLine() { return "Reading line from a HTML"; } @Override public void doFileOperation(FileOperator operator) { operator.processHtmlFile(this); } } interface FileOperator{ public void processPdfFile(PdfFile file); public void processHtmlFile(HtmlFile file); } class Head implements FileOperator{ public void operation(PdfFile file) { file.readNextLine(); } @Override public void processPdfFile(PdfFile file) { if(file.isSecure()){ System.out.println("Can't read secure file"); }else{ System.out.println(file.readNextLine()); } } @Override public void processHtmlFile(HtmlFile file) { System.out.println(file.readNextLine()); } } class FileUtil { public static ReadableFile fileIdentifier(String fileName) { if (fileName.toString().contains("pdf")) return new PdfFile(fileName); else if (fileName.toString().contains("html")) return new HtmlFile(fileName); return null; } }