一,建模的由来
就是将指定的xml字符串当作对象来操作
如果说当对一个指定的xml格式字符串完成了建模操作
好处在于,只需要调用指定的方法就可以完成预定的字符串获取;
二,建模的思路和好处
(1) 分析需要被建模的文件中有那几个对象
(2) 每个对象拥有的行为以及属性
(3 定义对象从小到大(从里到外)
(4) 通过23种的设计模式中的工厂模式,解析xml生产出指定对象
(5)好处:
提高代码的复用性。
三,xml进行建模
(1)下面我们就对一个对web.xml进行建模
这是一个config.xml文件我们要对这个进行建模
建模分两步:
1、以面向对象的编程思想,描述xml资源文件
2、将xml文件中内容封装进model实体对象。
思路:
首页我们要看一下这个里面有几个 标签;
里面有三个标签 forward action config
然后我们要把这些标签当做对象来进行操作,定义对象从里到外的
也就是要创建三个类 最后我们用config来建一个工厂,来解析所有对象的属性。
<?xml version="1.0" encoding="UTF-8"?> <config>
<!-- action标签:可以饱含0~N个forward标签 path:以/开头的字符串,并且值必须唯一 非空 type:字符串,非空 -->
<action path="/regAction" type="test.RegAction">
<!-- forward标签:没有子标签; name:字符串,同一action标签下的forward标签name值不能相同 ; path:以/开头的字符串
redirect:只能是false|true,允许空,默认值为false -->
<forward name="failed" path="/reg.jsp" redirect="false" />
<forward name="success" path="/login.jsp" redirect="true" />
</action> <action path="/loginAction" type="test.LoginAction">
<forward name="failed" path="/login.jsp" redirect="false" />
<forward name="success" path="/main.jsp" redirect="true" />
</action>
</config>
forwardModel类
package com.tanhaifang.Model; public class ForwardModel {
//<forward name="failed" path="/login.jsp" redirect="false" />这是configForward里面的属性
private String name;
private String Path;
private boolean redirect;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPath() {
return Path;
}
public void setPath(String path) {
Path = path;
}
public boolean isRedirect() {
return redirect;
}
public void setRedirect(boolean redirect) {
this.redirect = redirect;
}
}
ActionModel类
package com.tanhaifang.Model; import java.util.HashMap;
import java.util.Map;public class ActionModel {
//<action path="/loginAction" type="test.LoginAction">
private String path;
private String type;
private Map<String, ForwardModel> fmap=new HashMap<>();
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public void posh(ForwardModel forwardModel) {
fmap.put(forwardModel.getName(), forwardModel);
}
public ForwardMode