====== Listener 部分 =======
public interface AfterListener {
public void afterDrawing();
}
public interface BeforeListener {
public void beforeDrawing();
}
====== Page 部分 =======
public interface IPage {
public void afterDrawing();
public void beforeDrawing();
public void triger();
}
public class BasePage implements IPage{
public void afterDrawing() { }
public void beforeDrawing() { }
public void triger() { }
}
====== 构架的实现 (实现2个监听和1个触发) 部分 =======
public class TestListener {
public void drawing(IPage p, String event){
if(event.equals("1")) {
p.beforeDrawing();
}
if(event.equals("3")){
p.triger();
}else{
System.out.println("相当于实现tapestry的 rnderPage()")
}
if( event.equals("2") ){
p.afterDrawing();
}
}
}
====== 模拟tapestry 页面的.java 文件 部分 =======
public class LoginPage extends BasePage implements BeforeListener{
public void beforeDrawing() {
System.out.println("实现了相当于tapestry的 befoeRenderPage Listener ");
}
public void triger(){
System.out.println("实现了相当于tapestry的DirectService中触发的triger");
}
}
====== Application 运行 部分 =======
public class TestMain {
public static void main(String[] args) {
try{
System.out.println("1 equlas befoer"+"||"+"2 equlas after"+"||"+"3 equlas tigger");
System.out.print("Please input your choice:");
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String event = br.readLine();
IPage p = new LoginPage();
TestListener t = new TestListener();
t.drawing(p, event);
}catch (Exception e){
}
}
}
说明部分:
1 构架的实现部分,可以用JAVA 反射机制构造出;Target类需要自己写;
2 Application 运行部分,可运用XML和Servlet重写,可能的话运用生产模式
创 造实例;
3 对html页面的变量setter/getter实现 ,运用OGNL和XML