1700485480
1700485481
public ViewPathVisitor(String_result){
1700485482
1700485483
result=_result;
1700485484
1700485485
}
1700485486
1700485487
@Override
1700485488
1700485489
public void visit(Element el){
1700485490
1700485491
Attribute att=el.attribute(“name”);
1700485492
1700485493
if(att!=null){
1700485494
1700485495
if(att.getName().equals(“name”)&& att.getText().equals(result)){
1700485496
1700485497
viewPath=el.getText();
1700485498
1700485499
}
1700485500
1700485501
}
1700485502
1700485503
}
1700485504
1700485505
public String getViewPath(){
1700485506
1700485507
return viewPath;
1700485508
1700485509
}
1700485510
1700485511
}
1700485512
1700485513
DOM4J提供了VisitorSupport抽象接口,可以接受元素、节点、属性等访问者。我们这里接受了一个元素访问者,对所有的元素过滤一遍,然后找到自己需要的元素,非常强大!
1700485514
1700485515
我们继续分析,在IoC容器中都会区分对象是单例模式还是多例模式。想想我们的框架,每个HTTP请求都会产生一个线程,如果我们的Action初始化的时候是单例模式会出现什么情况?当并发足够多的时候就会产生阻塞,性能会严重下降,在特殊情况下还会产生线程不安全,这时就需要考虑多例情况。那多例是如何处理呢?使用Clone技术,首先在系统启动时初始化所有的Action,然后每过来一个请求就拷贝一个Action,减少了初始化对象的性能消耗。典型的原型模式,但问题也同时产生了,并发较多时,就可能会产生内存溢出的情况,内存不够用了!于是享元模式就可以上场了,建立一个对象池以容纳足够多的对象。
1700485516
1700485517
1700485518
1700485519
1700485521
设计模式之禅 38.2 最佳实践
1700485522
1700485523
本章我们粗略地讲解了一个MVC框架。一个MVC框架要考虑的外界环境因素太多了,而且本身MVC框架也是一个轻量型的,就是希望我们编写的程序在没有Struts、Spring MVC等框架的环境中不需要大规模的修改照样能够运行,所以编写一个框架不是一件容易的事情。幸运的是我们以学习模式为主,通过设计MVC框架来了解设计模式。我们来看看本章用到了哪些模式:
1700485524
1700485525
❑工厂方法模式
1700485526
1700485527
通过工厂方法模式把所有的拦截器链实现出来,方便在系统初始化时直接处理。
1700485528
1700485529
❑单例模式
[
上一页 ]
[ :1.70048548e+09 ]
[
下一页 ]