package designPatterns.structuralPatterns.proxy;import java.util.HashMap;publicinterfaceThirdPartyYouTubeLib{
HashMap<String, Video>popularVideos();
Video getVideo(String videoId);}
package designPatterns.structuralPatterns.proxy;import java.util.HashMap;publicclassThirdPartyYouTubeClassimplementsThirdPartyYouTubeLib{@Overridepublic HashMap<String, Video>popularVideos(){connectToServer("http://www.youtube.com");returngetRandomVideos();}@Overridepublic Video getVideo(String videoId){connectToServer("http://www.youtube.com/"+ videoId);returngetSomeVideo(videoId);}// -----------------------------------------------------------------------// Fake methods to simulate network activity. They as slow as a real life.privateintrandom(int min,int max){return min +(int)(Math.random()*((max - min)+1));}privatevoidexperienceNetworkLatency(){int randomLatency =random(5,10);for(int i =0; i < randomLatency; i++){try{
Thread.sleep(100);}catch(InterruptedException ex){
ex.printStackTrace();}}}privatevoidconnectToServer(String server){
System.out.print("Connecting to "+ server +"... ");experienceNetworkLatency();
System.out.print("Connected!"+"\n");}private HashMap<String, Video>getRandomVideos(){
System.out.print("Downloading populars... ");experienceNetworkLatency();
HashMap<String, Video> hmap =newHashMap<String, Video>();
hmap.put("catzzzzzzzzz",newVideo("sadgahasgdas","Catzzzz.avi"));
hmap.put("mkafksangasj",newVideo("mkafksangasj","Dog play with ball.mp4"));
hmap.put("dancesvideoo",newVideo("asdfas3ffasd","Dancing video.mpq"));
hmap.put("dlsdk5jfslaf",newVideo("dlsdk5jfslaf","Barcelona vs RealM.mov"));
hmap.put("3sdfgsd1j333",newVideo("3sdfgsd1j333","Programing lesson#1.avi"));
System.out.print("Done!"+"\n");return hmap;}private Video getSomeVideo(String videoId){
System.out.print("Downloading video... ");experienceNetworkLatency();
Video video =newVideo(videoId,"Some video title");
System.out.print("Done!"+"\n");return video;}}
Connecting to http://www.youtube.com... Connected!
Downloading populars... Done!-------------------------------
Most popular videos on YouTube (imagine fancy HTML)
ID: sadgahasgdas / Title: Catzzzz.avi
ID: asdfas3ffasd / Title: Dancing video.mpq
ID:3sdfgsd1j333 / Title: Programing lesson#1.avi
ID: mkafksangasj / Title: Dog play with ball.mp4
ID: dlsdk5jfslaf / Title: Barcelona vs RealM.mov
-------------------------------
Connecting to http://www.youtube.com/catzzzzzzzzz... Connected!
Downloading video... Done!-------------------------------
Video page (imagine fancy HTML)
ID: catzzzzzzzzz
Title: Some video title
Video: Random video.-------------------------------
Connecting to http://www.youtube.com... Connected!
Downloading populars... Done!-------------------------------
Most popular videos on YouTube (imagine fancy HTML)
ID: sadgahasgdas / Title: Catzzzz.avi
ID: asdfas3ffasd / Title: Dancing video.mpq
ID:3sdfgsd1j333 / Title: Programing lesson#1.avi
ID: mkafksangasj / Title: Dog play with ball.mp4
ID: dlsdk5jfslaf / Title: Barcelona vs RealM.mov
-------------------------------
Connecting to http://www.youtube.com/dancesvideoo... Connected!
Downloading video... Done!-------------------------------
Video page (imagine fancy HTML)
ID: dancesvideoo
Title: Some video title
Video: Random video.-------------------------------
Connecting to http://www.youtube.com/catzzzzzzzzz... Connected!
Downloading video... Done!-------------------------------
Video page (imagine fancy HTML)
ID: catzzzzzzzzz
Title: Some video title
Video: Random video.-------------------------------
Connecting to http://www.youtube.com/someothervid... Connected!
Downloading video... Done!-------------------------------
Video page (imagine fancy HTML)
ID: someothervid
Title: Some video title
Video: Random video.-------------------------------
Time elapsed:8954ms
Connecting to http://www.youtube.com... Connected!
Downloading populars... Done!-------------------------------
Most popular videos on YouTube (imagine fancy HTML)
ID: sadgahasgdas / Title: Catzzzz.avi
ID: asdfas3ffasd / Title: Dancing video.mpq
ID:3sdfgsd1j333 / Title: Programing lesson#1.avi
ID: mkafksangasj / Title: Dog play with ball.mp4
ID: dlsdk5jfslaf / Title: Barcelona vs RealM.mov
-------------------------------
Connecting to http://www.youtube.com/catzzzzzzzzz... Connected!
Downloading video... Done!-------------------------------
Video page (imagine fancy HTML)
ID: catzzzzzzzzz
Title: Some video title
Video: Random video.-------------------------------
Retrieved list from cache.-------------------------------
Most popular videos on YouTube (imagine fancy HTML)
ID: sadgahasgdas / Title: Catzzzz.avi
ID: asdfas3ffasd / Title: Dancing video.mpq
ID:3sdfgsd1j333 / Title: Programing lesson#1.avi
ID: mkafksangasj / Title: Dog play with ball.mp4
ID: dlsdk5jfslaf / Title: Barcelona vs RealM.mov
-------------------------------
Connecting to http://www.youtube.com/dancesvideoo... Connected!
Downloading video... Done!-------------------------------
Video page (imagine fancy HTML)
ID: dancesvideoo
Title: Some video title
Video: Random video.-------------------------------
Retrieved video 'catzzzzzzzzz' from cache.-------------------------------
Video page (imagine fancy HTML)
ID: catzzzzzzzzz
Title: Some video title
Video: Random video.-------------------------------
Connecting to http://www.youtube.com/someothervid... Connected!
Downloading video... Done!-------------------------------
Video page (imagine fancy HTML)
ID: someothervid
Title: Some video title
Video: Random video.-------------------------------
Time elapsed:6431ms
Time saved by caching proxy:2523ms
Process finished with exit code 0