Directly paste the Code:
Reflection Toolkit
Package com.zzk.cn;
Import java. Lang. Reflect. method;
Import java. util. List;
/**
* Object processing class
*
* @ Author zhengke. zzk
*/
Public class objectinstance {
/**
* Obtain the object based on the class name
*
* @ Param classname
* @ Return
*/
Public object getobjectbyclassname (string classname ){
Try {
Class CLS = Class. forname (classname );
Return Cls. newinstance ();
} Catch (exception e ){
Throw new runtimeexception ("objectinstance get class error:" + E );
}
}
/**
* Execution Method
*
* @ Param classname
* @ Param methodname
* @ Return
*/
Public object getmethodinvoke (string classname, string methodname, object ){
If (Object = NULL ){
Throw new runtimeexception ("objectinstance get method invoke object is null ");
}
Try {
Method method = Class. forname (classname). getmethod (methodname, new class [] {});
Return method. Invoke (object );
} Catch (exception e ){
Throw new runtimeexception ("objectinstance get method invoke error:" + E );
}
}
/**
* Execution Method
*
* @ Param classname
* @ Param methodname
* @ Return
*/
Public list <Object> getlistbyclassname (string classname, string methodname, object ){
If (Object = NULL ){
Throw new runtimeexception ("objectinstance get method invoke object is null ");
}
Try {
Method method = Class. forname (classname). getmethod (methodname, new class [] {});
Return (list <Object>) method. Invoke (object );
} Catch (exception e ){
Throw new runtimeexception ("objectinstance get method invoke error:" + E );
}
}
}
Interface
Package com.zzk.cn;
Public interface filter {
Public void dofilter (request, response, filterchain chain );
}
Request:
Package com.zzk.cn;
Public class request {
String requeststr;
Public String getrequeststr (){
Return requeststr;
}
Public void setrequeststr (string requeststr ){
This. requeststr = requeststr;
}
}
Response:
Package com.zzk.cn;
Public class response {
String responsestr;
Public String getresponsestr (){
Return responsestr;
}
Public void setresponsestr (string responsestr ){
This. responsestr = responsestr;
}
}
Responsibility chain
Package com.zzk.cn;
Import java. util. arraylist;
Import java. util. List;
Public class filterchain implements filter {
List <filter> filters = new arraylist <filter> ();
Int Index = 0;
Public filterchain addfilter (filter f ){
This. Filters. Add (f );
Return this;
}
@ Override
Public void dofilter (request, response, filterchain chain ){
If (Index = filters. Size ())
Return;
Filter F = filters. Get (INDEX );
Index ++;
F. dofilter (request, response, chain );
}
}
Policy 1:
Package com.zzk.cn;
Public class facefilter implements filter {
@ Override
Public void dofilter (request, response, filterchain chain ){
Request. requeststr = request. getrequeststr (). Replace (":)",
"^ V ^ ------- facefilter ");
Chain. dofilter (request, response, chain );
Response. responsestr + = "------- facefilter ";
}
}
Policy 2:
Package com.zzk.cn;
/**
* Filter script elements in HTML
* @ Author LCQ
*
*/
Public class htmlfilter implements filter {
@ Override
Public void dofilter (request, response, filterchain chain ){
Request. requeststr = request. getrequeststr (). Replace ("<","[")
. Replace (">", "] -------- htmlfilter ");
Chain. dofilter (request, response, chain );
Response. responsestr + = "-------- htmlfilter ";
}
}
Policy 3:
Package com.zzk.cn;
Public class sesitivefilter implements filter {
@ Override
Public void dofilter (request, response, filterchain chain ){
Request. requeststr = request. getrequeststr (). Replace ("sensitive ","")
. Replace ("cat", "Haha ------ sesitivefilter ");
Chain. dofilter (request, response, chain );
Response. responsestr + = "------ sesitivefilter ";
}
}
Test method:
Package com.zzk.cn;
Public class main2 {
Public static void main (string [] ARGs ){
String message = "sensitive words, Chongqing, <SCRIPT> Dodge :)";
Request request = new request ();
Request. setrequeststr (Message );
Response response = new response ();
Response. setresponsestr ("response ");
Objectinstance = new objectinstance ();
Object object = objectinstance. getobjectbyclassname ("com.zzk.cn. htmlfilter ");
Filterchain fc = new filterchain ();
FC. addfilter (filter) object );
FC. addfilter (New sesitivefilter ());
Filterchain FC2 = new filterchain ();
Fc2.addfilter (New facefilter ());
FC. addfilter (FC2 );
FC. dofilter (request, response, FC );
System. Out. println ("request =" + request. getrequeststr ());
System. Out. println ("response =" + response. getresponsestr ());
}
}
Demo of class reflection mechanism + responsibility chain design mode