大家都在学习各种各样的框架.
但学到什么样才算个头,掌握的程序是个什么样:了解,熟悉,精通?
过去发问过"如何重构STRUTS的ACTION"
当时只知道有个action类,不知道有个DISPATCHACTION.
为了减少类的数量,回到面向过程的思路上去了,根据参数通过if else的判断,处理相应的操作.
对于替代IF ELSE传统思想的面向对象方法很多,策略模式,状态模式,命令模式..都能解决这样的问题,问题在于你的业务是什么样的.
现在又看到了问题:
引用
public interface command{
public String execute();
}
如果每一个命令都要实现以上接口的话,那文件太多了,我想把相关的命令都放在一个文件中,比如有关用户的命令,把所有要实现的命令就放在用户相关的操作文件中,请问下老师该怎么设计啊?
根据上面的问题,可以通过动态代理+反射方法实现
像下面的方法:
public class TestReflectCommand {
public static void main(String[] args){
CommandLoader cl=new DefaultCommandLoader(new DefaultShowCommand());
cl.excute("executeShowList",null);
}
}
public interface CommandLoader {
void excute(String commandName,Object[] argument);
}
public class DefaultCommandLoader implements CommandLoader {
private ShowCommand showCommand;
private HashMap subCommandMap=new HashMap();
public DefaultCommandLoader(ShowCommand showCommand){
this.showCommand=showCommand;
init();
}
private void init() {
Method[] allMethod=this.showCommand.getClass().getMethods();
for(int i=0;i<allMethod.length;i++){
Method m=allMethod;
if(m.getName().startsWith("execute")){
subCommandMap.put(m.getName(), m);
}
}
}
public void excute(String commandName, Object[] argument) {
Method m=(Method) this.subCommandMap.get(commandName);
if(m==null){
throw new NullPointerException("not found command");
}
try{
m.invoke(this.showCommand,argument);
}
catch(Exception e){
throw new RuntimeException("Load command["+m.getName()+"error");
}
}
}
public interface ShowCommand {
public void executeShowList();
public void excuteShowString();
public void executeShowInteger();
public void executeShowLong();
}
public class DefaultShowCommand implements ShowCommand {
public void excuteShowString() {
System.out.println(String.class.getName());
}
public void executeShowInteger() {
System.out.println(Integer.class.getName());
}
public void executeShowList() {
System.out.println(List.class.getName());
}
public void executeShowLong() {
System.out.println(Long.class.getName());
}
}
这个方法是从SPRING的思想来的.
当然STRUTS里也有这样的思想....
所以学框架还得多看看她的源码....
分享到:
相关推荐
它们通常包括CSS(层叠样式表)和JavaScript的集成,使得布局、交互性和响应式设计变得更加简单。 "安然静态园"框架可能包含了一些预设的模板、组件和样式,这些都可以直接用于创建网页,减少从零开始的编码工作。...
《生态经济学集成框架的理论与实践 I-Ⅱ》是一套深入探讨生态经济学核心理论与实践的学术资料,由著名学者徐中民撰写。该压缩包包含两部分:一本PDF电子书《生态经济学集成框架的理论与实践_I_集成思想的领悟之道_徐...
在这个"图形学实验程序框架"中,我们主要关注的是如何通过编程来实现计算机图形学的基本概念和技术。这个框架是专为本科生设计的,目的是帮助他们更好地理解和实践计算机图形学中的各种算法。 该框架基于VC2010开发...
ci 框架 学习文档
MYQQA 框架开源源码 , 仅供研究学习使用!MYQQA 框架开源源码 , 仅供研究学习使用!MYQQA 框架开源源码 , 仅供研究学习使用!MYQQA 框架开源源码 , 仅供研究学习使用!...MYQQA 框架开源源码 , 仅供研究学
教育学是研究教育现象、教育问题以及教育规律的科学,对于教师、教育工作者以及有志于从事教育行业的人员来说,掌握教育学的知识框架至关重要。这个名为"关于教育学的知识框架.rar"的压缩包,显然是一个集成了教育学...
系统功能语言学理论框架
在将机器学习应用于粒子物理学的过程中,一个持续的挑战是如何超越歧视来学习基础物理学。 为此,一个强大的工具将是无监督学习的框架,在该框架中,机器无需参考预先建立的标签,即可学习对其进行训练的数据的复杂...
保存框架集时,必须保存框架集文件本身以及在框架中显示的每个单独HTML文件,这样才能确保页面在浏览器中正确显示。框架集的保存涉及到多个文件,包括框架集定义文件和每个框架内容文件。 最后,框架的属性和链接...
《生理学》重点框架思维导图
1. 为了使框架看起来像一个整体,通常会设置框架边界的宽度为0,这样各个框架之间没有明显的分隔线。 2. 导航框架内的元素应固定位置,滚动条只在主框架中显示,确保浏览体验的一致性。 3. 设置所有框架页的背景颜色...
提出了一种修正的量子动力学方程,该方程考虑了旋转框架的非惯性特征。 Wigner函数对手性流体的矢量和轴向矢量场分量以半经典方案进行求解。 结果表明,利用它们计算出的手性电流和能量动量张量与流体力学结果一致。...
### 数字经济学的基本问题与分析框架 #### 一、引言与问题背景 随着信息技术的飞速发展,数字经济已经成为全球经济的重要驱动力。然而,对于数字经济本质的理解及其带来的经济变革,目前学界的理论研究还处于相对...
泛地图学理论研究框架 泛地图学是指在信息空间、人文社会空间和地理空间相融合的三元空间中,研究地图的理论和方法。泛地图学理论研究框架旨在满足地图学在新时期发展的需要,构建适应新环境背景的泛地图学理论框架...
基于力软敏捷框架V7.0开发学习,通过详细整理的Ppt,主要介绍整个框架的结构,即用到的主要技术,希望能够为正在学习的小伙伴们提供一定的帮助。
2017年广东专插本管理学-知识框架图
这样既提高了开发效率,又降低了维护成本。 在学习DWZ框架的过程中,你可能需要掌握一些基础的HTML、CSS和JavaScript知识,同时了解JSON格式用于数据交换。随着对DWZ的深入理解,你还可以探索其高级特性,如AJAX...
在Dreamweaver CS3这样的网页设计软件中,可以轻松创建和管理框架。用户可以选择15种预设的框架类型,包括上方固定、下方固定、左侧固定等,或是通过新建文档或转换现有文档的方式来创建框架网页。此外,还可以进行...
根据提供的文件信息,本文将详细阐述基于Matlab/Simulink的航天器姿态动力学与控制仿真框架相关的知识点。...随着航天技术的不断发展,这样的仿真框架在未来航天器的设计与控制中将扮演越来越重要的角色。