package com.yxd.knowledge.design.设计模式.责任链模式.code;
public class Request {
/**
* 是否以登录
*/
private boolean loggedOn;
/**
* 是否没频繁请求
*/
private boolean frequentOK;
/**
* 是否有权访问
*/
private boolean isPermits;
/**
* 是否包含敏感词
*/
private boolean containsSensitiveWords;
private String requestBody;
public Request(boolean loggedOn, boolean frequentOK, boolean isPermits, boolean containsSensitiveWords) {
this.loggedOn = loggedOn;
this.frequentOK = frequentOK;
this.isPermits = isPermits;
this.containsSensitiveWords = containsSensitiveWords;
}
public boolean isLoggedOn() {
return loggedOn;
}
public boolean isFrequentOK() {
return frequentOK;
}
public boolean isPermits() {
return isPermits;
}
public boolean isContainsSensitiveWords() {
return containsSensitiveWords;
}
static class RequestBuilder{
private boolean loggedOn;
private boolean frequentOK;
private boolean isPermits;
private boolean containsSensitiveWords;
RequestBuilder loggedOn(boolean loggedOn){
this.loggedOn = loggedOn;
return this;
}
RequestBuilder frequentOK(boolean frequentOK){
this.frequentOK = frequentOK;
return this;
}
RequestBuilder isPermits(boolean isPermits){
this.isPermits = isPermits;
return this;
}
RequestBuilder containsSensitiveWords(boolean containsSensitiveWords){
this.containsSensitiveWords = containsSensitiveWords;
return this;
}
public Request build() {
return new Request(loggedOn, frequentOK, isPermits, containsSensitiveWords);
}
}
}
/**
* 处理者基类
*/
abstract class Handler{
Handler next;
public Handler(Handler next){
this.next = next;
}
public Handler getNext() {
return next;
}
public void setNext(Handler next) {
this.next = next;
}
/**
* 处理请求
* @param request
* @return 只有返回true才会继续执行
*/
abstract boolean process(Request request);
}
/**
* 请求频率处理者
*/
class RequestFrequentHandler extends Handler{
public RequestFrequentHandler(Handler next) {
super(next);
}
@Override
boolean process(Request request) {
System.out.println("访问频率控制");
if(request.isFrequentOK()){
Handler next = getNext();
if(null == next){
// 如果没有下个节点了则返回true
return true;
}
// 根据下个节点的返回值来进行返回
return next.process(request);
}
return false;
}
}
/**
* 登录处理器
*/
class LoggingHandler extends Handler{
public LoggingHandler(Handler next) {
super(next);
}
@Override
boolean process(Request request) {
System.out.println("登录验证");
if(request.isLoggedOn()){
Handler next = getNext();
if(null == next){
return true;
}
return next.process(request);
}
return false;
}
}
class IsPermitsHandler extends Handler{
public IsPermitsHandler(Handler next) {
super(next);
}
@Override
boolean process(Request request) {
System.out.println("权限验证");
if(request.isPermits()){
Handler next = getNext();
if(null == next){
return true;
}
return next.process(request);
}
return false;
}
}
class ContainsSensitiveWordsHandler extends Handler{
public ContainsSensitiveWordsHandler(Handler next) {
super(next);
}
@Override
boolean process(Request request) {
System.out.println("敏感词验证");
if(request.isContainsSensitiveWords()){
Handler next = getNext();
if(null == next){
return true;
}
return next.process(request);
}
return false;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
安卓面试宝典安卓面试宝典 (730个子文件)
Request.java 4KB
FlyWeightTest.java 2KB
MyJobService.java 2KB
DclSingleInstance.java 1KB
User.java 937B
SortExercise.java 613B
Test.java 600B
LazySingleInstance.java 350B
HungarySingleInstance.java 303B
PaintStudyView.kt 6KB
MyEventBus.kt 5KB
RetrofitFragment.kt 5KB
LruCacheFragment.kt 3KB
冒泡排序.kt 3KB
AActivity.kt 3KB
OkHttpCustomInterceptor.kt 3KB
SampleFragment.kt 3KB
选择排序.kt 2KB
OkHttpPost.kt 2KB
MessengerClient.kt 2KB
BitmapDispatcher.kt 2KB
MyOkHttpFragment.kt 2KB
OkHttpGet.kt 2KB
RVFragment.kt 2KB
横向列表.kt 2KB
垂直列表.kt 2KB
MessengerService.kt 2KB
StartServiceFragment.kt 2KB
BitmapReuseFragment.kt 2KB
TestBRActivity.kt 1KB
MyGlideFragment.kt 1KB
JsonHttpRequest.kt 1KB
RequestManager.kt 1KB
ThreadPoolManager.kt 1KB
BitmapRequest.kt 1KB
BitmapSizeFragment.kt 1KB
DrawBasicView.kt 1KB
BActivity.kt 1KB
CActivity.kt 985B
BitmapRegionDecoderFragment.kt 984B
MvvmFragment.kt 979B
TestEventBusFragment.kt 976B
TestService.kt 937B
TestMemory.kt 835B
IntentDataTransportActivity.kt 811B
LifecycleActivity.kt 707B
MyOkHttp.kt 704B
插入排序.kt 666B
LifeCycleFragment.kt 613B
DynamicBroadcastR.kt 607B
StaticBroadcastR.kt 606B
JsonCallbackListener.kt 597B
单例.kt 571B
SubscribeMethod.kt 451B
CustomViewFragment.kt 334B
RvFragment.kt 287B
IHttpRequest.kt 215B
MyGlide.kt 200B
Callback.kt 160B
HttpTask.kt 132B
Subscribe.kt 104B
ThreadMode.kt 94B
MyGlide.kt 69B
LICENSE 11KB
4.Glide之into.md 15KB
MVP设计.md 12KB
01. 策略模式.md 10KB
02. 组合模式android.md 9KB
3. AMS→ApplicationThread.md 9KB
线程安全之Lock.md 7KB
01. 快速学习JVM.md 6KB
02. 装饰器模式Android.md 6KB
02. 抽象工厂Android.md 6KB
3.OKHTTP分发器原理.md 6KB
01. 简单工厂Java.md 6KB
02_线程池的工作原理.md 6KB
补充_setOnTouchListener.md 6KB
启动流程.md 5KB
03. IntentService.md 5KB
execute→startSpecificActivity.md 5KB
Parcelable.md 5KB
异步开启进程.md 5KB
说说Android线程间消息传递机制.md 5KB
02. 代理模式Android.md 5KB
DispatchEnqueue.md 5KB
02. 观察者模式Android.md 5KB
分析App启动流程.md 5KB
01. Bitmap压缩方式.md 5KB
03. 事件的分发和处理.md 5KB
02. Bitmap加载优化.md 4KB
05. BitmapFactoryOptions.md 4KB
generateLayout.md 4KB
02. 拦截法.md 4KB
05_HashMap_扩容机制.md 4KB
01. Service简介.md 4KB
拦截JS的输入框prompt.md 4KB
02. Android类加载机制.md 4KB
4. ApplicationThread→Activity.md 4KB
02. 模板方法模式Android.md 4KB
14. GC算法之分代回收算法.md 4KB
共 730 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
资源评论
十小大
- 粉丝: 9945
- 资源: 2555
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功