责任链模式
责任链模式(Chain of Responsibility Pattern)为请求创建一个接收者对象的链,每个接收者都包含对另一个接收者的引用。如果不能处理该请求,那么它会把相同的请求传给下一个接收者。该模式在 Java Web中有很多应用,如 Apache Tomcat 对 Encoding 的处理,Struts2 的拦截器,JSP Servlet 的 Filter等等。
创建抽象类 AbstractLogger,带有详细的日志记录级别,在其基础上拓展出三个记录器,如果消息的级别属于自己,则记录器将其打印,否则把消息传给下一个记录器。
abstract class AbstractLogger { |
在 DebugLogger 中
class DebugLogger extends AbstractLogger { |
调用
static AbstractLogger getChainOfLogger() { |
控制台输出结果为
InfoLogger: an info msg |
其他
命令模式
一种数据驱动的设计模式,请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并将命令传给它以执行命令。调用对象寻找合适对象的过程就像开关控制电器,它并不需要知道电器的具体情况,只需要根据命令,控制不同电线的连通状态。模式实现的代码较繁琐,具体的例子移步:Java设计模式–命令模式(以管理智能家电为例)