Java设计模式(3):前端控制器模式

006zipb5zy7aMUimBAhcd&690

前端控制器模式(Front Controller Pattern)提供一种可以集中管理请求的控制器,即所谓的前端控制器,该前端控制器用于响应客户请求,为每个请求寻找匹配的处理器。在这种模式中,控制器提供一个处理不同请求的控制点,这些控制点包括日志记录,安全事务,错误处理和响应内容的生成(如视图),通过将这些工作集中在一点进行处理,大大地减低了Java代码量,同时这种机制也可以减少视图模块的程序逻辑,保证了在 不同请求之间可以重用大量的逻辑代码。

前端控制器模式主要有三类组件构成:

前端控制器(Front Controller)

处理应用程序所有类型请求的单个处理程序,应用程序可以是基于 web 的应用程序,也可以是基于桌面的应用程序。

处理器(Handler)

前端控制器可能使用一个处理器对象来处理请求到相应的具体处理程序。

视图(View)

视图是为请求而创建的对象。

 

下面的示例我们将创建 FrontController,Handler 分别当作前端控制器和处理器。HomeView 和 LoginView 表示各种为前端控制器接收到的请求而创建的视图。FrontControllerPatternDemo是演示类使用 FrontController 来演示前端控制器设计模式。

006zipb5zy7aMUl6lYU34&690 

示例:

public abstract class View {

public abstract void show();

 

}

public class HomeView extends View {

@Override

public void show() {

   System.out.println("显示主页视图");

}

}

public class LogInView extends View {

@Override

public void show() {

   System.out.println("显示登陆视图");

}

}

public class Dispatcher {

private HomeView homeView;

private LogInView logInView;

 

public Dispatcher(){

homeView=new HomeView();

logInView=new LogInView();

}

 

public void doDispacher(String request) {

if("HOME".equals(request)){

homeView.show();

}else{

logInView.show();

}

}

}

public class FrontController {

 

private Dispatcher dispatcher;

 

public FrontController(){

dispatcher=new Dispatcher();

}

public boolean authenticate() {

System.out.println("通过认证");

return true;

 

}

public void dispatcher(String request){

if( authenticate()){

 dispatcher.doDispacher(request);

}

}

}

public class FrontControllerPatternDemo {

public static void main(String[] args) {

FrontController controller=new FrontController();

controller.dispatcher("HOME");

}

}

 

 

转载于:https://my.oschina.net/u/2971691/blog/891845

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值