论坛首页 Java企业应用论坛

小谈面向对象

浏览 1556 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2011-08-11  
面向对象的一个好处就是可以把抽象的东西对象化,具体化,使用起来就十分方便。
举个例子:tomcat封装了http请求,请求中的每一个元素都被封装成Request的一个属性。这样当我们发送一个http请求时,所有元素都分别分派给Request的一个实例,使用的时候就只操作这个实例就行了。而不用每次使用时都去解析http请求,是不是方便许多了。下面是Request封装的属性:

org.apache.coyote. Request:
public final class Request {
    // --------------------------------- Instance Variables
    private int serverPort = -1;
    private MessageBytes serverNameMB = MessageBytes.newInstance();
    private int remotePort;
    private int localPort;
    private MessageBytes schemeMB = MessageBytes.newInstance();
    private MessageBytes methodMB = MessageBytes.newInstance();
    private MessageBytes unparsedURIMB = MessageBytes.newInstance();
    private MessageBytes uriMB = MessageBytes.newInstance();
    private MessageBytes decodedUriMB = MessageBytes.newInstance();
    private MessageBytes queryMB = MessageBytes.newInstance();
    private MessageBytes protoMB = MessageBytes.newInstance();
    // remote address/host
    private MessageBytes remoteAddrMB = MessageBytes.newInstance();
    private MessageBytes localNameMB = MessageBytes.newInstance();
    private MessageBytes remoteHostMB = MessageBytes.newInstance();
    private MessageBytes localAddrMB = MessageBytes.newInstance();     
    private MimeHeaders headers = new MimeHeaders();
    private MessageBytes instanceId = MessageBytes.newInstance();
………
}
/*org.apache.tomcat.util.buf.MessageBytes:这是 一个接近底层的字符串处理类,为什么说是接近底层,是因为socket接收进来的都是字节类型,而java用的是char或者String,这之间的转换 涉及到编码问题和性能问题,所以凡是socket收进来的信息,全部都用这个类表示,只有当要输出字符串的时候,才会将里面的字节进行转换,实现一种延迟 加载的懒模式,被Tomcat底层所使用的Request类,就是大量使用了这个类来存放数据。*/


这里只是举了个小例子来抛砖引玉,面向对象的水是很深的,至于你信不信,我反正信了。
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics