首页 > 代码库 > 阅读源码时看到的实际使用的设计模式汇总

阅读源码时看到的实际使用的设计模式汇总

之前看到了很多,这里做一个总结,方便以后查阅。持续更新,之前的一些看过的没有完全想起来,以后看到再想。

模板方法设计模式

(一)HttpServlet抽象类中的service方法。首先这个方法有两个,第一个是检查是否是http协议,不是抛出异常,是的话传给第二个service方法。

第二个方法根据http报文方法参数类型(post,get等等)具体丢给对应的doGet,doPost方法处理。而在这个HttpServlet抽象类级别上,这些方法都是直接抛出异常。换句话就是期待子类继承它,然后用模板方法设计模式。子类一般不用重写来自HttpServlet的service方法,当请求到来的时候,先调用父类的service方法对请求进行甄别,然后调用具体的底层实现。

(二)底层容器类。大量使用这个设计模式,很多操作依赖底层的某些方法的具体实现

(三)IO包。比如对于InputStream,它的具体read方法交给底层自己实现,来实现上层封装可复用的代码(比如安全的检查,边界的控制),底层根据不同的媒介具体实现怎么“读”  注意这里还使用了装饰者模式。

(四)worker的逻辑,这里存疑,和模板方法设计模式有类似的地方,但是又不全是。

阅读源码时看到的实际使用的设计模式汇总