首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

什么时候施用Visitor访问者模式

2012-10-29 
什么时候使用Visitor访问者模式???????集合对象大多数情况下都是同类对象的聚集,对集合对象的操作也就是对

什么时候使用Visitor访问者模式?

??????集合对象大多数情况下都是同类对象的聚集,对集合对象的操作也就是对同类对象的操作。但是,如果集合对象中保存的对象不同,该如何对这些不同类型的对象进行操作?通常会根据对象的类型进行判断再进行操作,就容易出现很多if else语句。如果采用访问者模式,就可以很优雅的解决此类问题,访问者可以利用多态对每一种对象进行访问。

??????Dom4J中的访问者模式:

?

?

?

具体的Document遍历操作如下:

?

public abstract class AbstractDocument extends AbstractBranch implements Document {。。。/**     * <p>     * <code>accept</code> method is the <code>Visitor Pattern</code>     * method.     * </p>     *      * @param visitor     *            <code>Visitor</code> is the visitor.     */    public void accept(Visitor visitor) {        visitor.visit(this);        DocumentType docType = getDocType();        if (docType != null) {            visitor.visit(docType);        }        // visit content        List content = content();        if (content != null) {            for (Iterator iter = content.iterator(); iter.hasNext();) {                Object object = iter.next();                if (object instanceof String) {                    Text text = getDocumentFactory()                            .createText((String) object);                    visitor.visit(text);                } else {                    Node node = (Node) object;                    node.accept(visitor);                }            }        }    }。。。}

?

?

访问者模式更适用于被访问者相对固定,而访问方式易发生变化的情况。?

1 楼 kingquake21 2011-06-03   第一段代码没有着色

热点排行