面向对象的一个好处就是可以把抽象的东西对象化,具体化,使用起来就十分方便。
举个例子:tomcat封装了http请求,请求中的每一个元素都被封装成Request的一个属性。这样当我们发送一个http请求时,所有元素都分别分派给Request的一个实例,使用的时候就只操作这个实例就行了。而不用每次使用时都去解析http请求,是不是方便许多了。下面是Request封装的属性:
org.apache.coyote. Request:
这里只是举了个小例子来抛砖引玉,面向对象的水是很深的,至于你信不信,我反正信了。
举个例子: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类,就是大量使用了这个类来存放数据。*/
这里只是举了个小例子来抛砖引玉,面向对象的水是很深的,至于你信不信,我反正信了。