坦克大战(一期)-设计模式-责任链模式之模放servlet的调用顺序

DesignPatterns
bingor 3 years ago
parent 7a789cda65
commit 79b5f7ecf5

@ -0,0 +1,11 @@
package com.msb.chain.servlet.v1;
/**
* @Author bingor
* @Date 2022/10/18 10:05
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
public interface Filter {
public void doFilter(Request request, Response response);
}

@ -0,0 +1,32 @@
package com.msb.chain.servlet.v1;/**
* @Author bingor
* @Date 2022/10/18 10:09
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
import java.util.ArrayList;
import java.util.List;
/**
*@ClassName ChainFilter
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:09
*@Version 3.0
*/
public class FilterChain implements Filter {
private List<Filter> filters = new ArrayList<>();
public FilterChain addFilter(Filter filter) {
filters.add(filter);
return this;
}
@Override
public void doFilter(Request request, Response response) {
for (Filter filter : filters) {
filter.doFilter(request, response);
}
}
}

@ -0,0 +1,28 @@
package com.msb.chain.servlet.v1;/**
* @Author bingor
* @Date 2022/10/18 10:11
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
/**
*@ClassName Main
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:11
*@Version 3.0
*/
public class Main {
public static void main(String[] args) {
FilterChain chain = new FilterChain();
Request request = new Request();
request.setStr("request:");
Response response = new Response();
response.setStr("response:");
chain.addFilter(new OneFilter()).addFilter(new TwoFilter());
chain.doFilter(request, response);
System.out.println(request.getStr());
System.out.println(response.getStr());
}
}

@ -0,0 +1,21 @@
package com.msb.chain.servlet.v1;/**
* @Author bingor
* @Date 2022/10/18 10:05
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
/**
*@ClassName HtmlFilter
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:05
*@Version 3.0
*/
public class OneFilter implements Filter {
@Override
public void doFilter(Request request, Response response) {
request.setStr(request.getStr() + "-OneFilter");
response.setStr(response.getStr() + "-OneFilter");
}
}

@ -0,0 +1,25 @@
package com.msb.chain.servlet.v1;/**
* @Author bingor
* @Date 2022/10/18 10:04
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
/**
*@ClassName Request
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:04
*@Version 3.0
*/
public class Request {
private String str;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}

@ -0,0 +1,25 @@
package com.msb.chain.servlet.v1;/**
* @Author bingor
* @Date 2022/10/18 10:04
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
/**
*@ClassName Request
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:04
*@Version 3.0
*/
public class Response {
private String str;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}

@ -0,0 +1,21 @@
package com.msb.chain.servlet.v1;/**
* @Author bingor
* @Date 2022/10/18 10:08
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
/**
*@ClassName TwoFilter
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:08
*@Version 3.0
*/
public class TwoFilter implements Filter {
@Override
public void doFilter(Request request, Response response) {
request.setStr(request.getStr() + "-TwoFilter");
response.setStr(response.getStr() + "-TwoFilter");
}
}

@ -0,0 +1,11 @@
package com.msb.chain.servlet.v3;
/**
* @Author bingor
* @Date 2022/10/18 10:05
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
public interface Filter {
public void doFilter(Request request, Response response, FilterChain chain);
}

@ -0,0 +1,35 @@
package com.msb.chain.servlet.v3;/**
* @Author bingor
* @Date 2022/10/18 10:09
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
import java.util.ArrayList;
import java.util.List;
/**
*@ClassName ChainFilter
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:09
*@Version 3.0
*/
public class FilterChain implements Filter {
private List<Filter> filters = new ArrayList<>();
private int index = 0;
public FilterChain addFilter(Filter filter) {
filters.add(filter);
return this;
}
@Override
public void doFilter(Request request, Response response, FilterChain chain) {
if(index == filters.size()) return;
Filter filter = filters.get(index);
index++;
filter.doFilter(request, response, chain);
return;
}
}

@ -0,0 +1,28 @@
package com.msb.chain.servlet.v3;/**
* @Author bingor
* @Date 2022/10/18 10:11
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
/**
*@ClassName Main
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:11
*@Version 3.0
*/
public class Main {
public static void main(String[] args) {
FilterChain chain = new FilterChain();
Request request = new Request();
request.setStr("request:");
Response response = new Response();
response.setStr("response:");
chain.addFilter(new OneFilter()).addFilter(new TwoFilter());
chain.doFilter(request, response, chain);
System.out.println(request.getStr());
System.out.println(response.getStr());
}
}

@ -0,0 +1,22 @@
package com.msb.chain.servlet.v3;/**
* @Author bingor
* @Date 2022/10/18 10:05
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
/**
*@ClassName HtmlFilter
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:05
*@Version 3.0
*/
public class OneFilter implements Filter {
@Override
public void doFilter(Request request, Response response, FilterChain chain) {
request.setStr(request.getStr() + "-OneFilter");
chain.doFilter(request, response, chain);
response.setStr(response.getStr() + "-OneFilter");
}
}

@ -0,0 +1,25 @@
package com.msb.chain.servlet.v3;/**
* @Author bingor
* @Date 2022/10/18 10:04
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
/**
*@ClassName Request
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:04
*@Version 3.0
*/
public class Request {
private String str;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}

@ -0,0 +1,25 @@
package com.msb.chain.servlet.v3;/**
* @Author bingor
* @Date 2022/10/18 10:04
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
/**
*@ClassName Request
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:04
*@Version 3.0
*/
public class Response {
private String str;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}

@ -0,0 +1,22 @@
package com.msb.chain.servlet.v3;/**
* @Author bingor
* @Date 2022/10/18 10:08
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
/**
*@ClassName TwoFilter
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:08
*@Version 3.0
*/
public class TwoFilter implements Filter {
@Override
public void doFilter(Request request, Response response, FilterChain chain) {
request.setStr(request.getStr() + "-TwoFilter");
chain.doFilter(request, response, chain);
response.setStr(response.getStr() + "-TwoFilter");
}
}

@ -0,0 +1,11 @@
package com.msb.chain.servlet.v4;
/**
* @Author bingor
* @Date 2022/10/18 10:05
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
public interface Filter {
public void doFilter(Request request, Response response, FilterChain chain);
}

@ -0,0 +1,34 @@
package com.msb.chain.servlet.v4;/**
* @Author bingor
* @Date 2022/10/18 10:09
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
import java.util.ArrayList;
import java.util.List;
/**
*@ClassName ChainFilter
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:09
*@Version 3.0
*/
public class FilterChain {
private List<Filter> filters = new ArrayList<>();
private int index = 0;
public FilterChain addFilter(Filter filter) {
filters.add(filter);
return this;
}
public void doFilter(Request request, Response response) {
if(index == filters.size()) return;
Filter filter = filters.get(index);
index++;
filter.doFilter(request, response, this);
return;
}
}

@ -0,0 +1,28 @@
package com.msb.chain.servlet.v4;/**
* @Author bingor
* @Date 2022/10/18 10:11
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
/**
*@ClassName Main
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:11
*@Version 3.0
*/
public class Main {
public static void main(String[] args) {
FilterChain chain = new FilterChain();
Request request = new Request();
request.setStr("request:");
Response response = new Response();
response.setStr("response:");
chain.addFilter(new OneFilter()).addFilter(new TwoFilter());
chain.doFilter(request, response);
System.out.println(request.getStr());
System.out.println(response.getStr());
}
}

@ -0,0 +1,22 @@
package com.msb.chain.servlet.v4;/**
* @Author bingor
* @Date 2022/10/18 10:05
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
/**
*@ClassName HtmlFilter
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:05
*@Version 3.0
*/
public class OneFilter implements Filter {
@Override
public void doFilter(Request request, Response response, FilterChain chain) {
request.setStr(request.getStr() + "-OneFilter");
chain.doFilter(request, response);
response.setStr(response.getStr() + "-OneFilter");
}
}

@ -0,0 +1,25 @@
package com.msb.chain.servlet.v4;/**
* @Author bingor
* @Date 2022/10/18 10:04
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
/**
*@ClassName Request
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:04
*@Version 3.0
*/
public class Request {
private String str;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}

@ -0,0 +1,25 @@
package com.msb.chain.servlet.v4;/**
* @Author bingor
* @Date 2022/10/18 10:04
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
/**
*@ClassName Request
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:04
*@Version 3.0
*/
public class Response {
private String str;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}

@ -0,0 +1,22 @@
package com.msb.chain.servlet.v4;/**
* @Author bingor
* @Date 2022/10/18 10:08
* @Description: com.msb.chain.servlet.v1
* @Version: 1.0
*/
/**
*@ClassName TwoFilter
*@Description TODO
*@Author bingor
*@Date 2022/10/18 10:08
*@Version 3.0
*/
public class TwoFilter implements Filter {
@Override
public void doFilter(Request request, Response response, FilterChain chain) {
request.setStr(request.getStr() + "-TwoFilter");
chain.doFilter(request, response);
response.setStr(response.getStr() + "-TwoFilter");
}
}
Loading…
Cancel
Save