|
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
很多朋友应该都知道这两句话的含义吧!说不定也不一定哦!
我对这两句话主要有下面一些联想:
1.得到url的连接对象URLConnection,其中使用工厂方法设计模式;
2.由于你的URL是http协议的所以downcast为HttpURLConnection;HttpURLConnection是URLConnection的子类;(这是我根据他的HttpURLConnection推断的,在其构造URL时,该URL必定是Http协议的),使用了向下转型;
3.得到此连接的输入流,对输入流进行适配,适配至一个Reader对象,使用了适配器模式;
4.然后对此Reader对象使用装饰器模式进行装饰,最终得到一个带缓冲的reader,使用了IO包中最著名的模式装饰器模式;
5.接着应该就是使用readLine方法读取每一行!!
是否你还有其它联想呢?net包中的HttpURLConnection中流的读取和内容的读取是否又是观察者模式呢?!是否在URL构造器中使用的是ftp协议是否可以将URLConnection downcast为FTPURLConnection呢?!net包的基础又是什么呢?――Socket。那我们的Socket和URL的差别是什么呢?(URL主要用于资源的下载,Socket主要用于通信,是构造通信协议的基础。不信啊!打开你的rt.jar反编译net包中的其它文件你就可以明白了!)Socket又是什么呢?和本地操作系统对于的一个类!!好像还有很多很多唉!!读完net包的源代码和rt.jar包中对于的源代码你会发现,net包其实是一个包含大量工厂方法的优秀的Framework。
赶快去研究研究吧 |
|