重新定义OSWorkflow中的AbstractDescriptor抽象类

王朝java/jsp·作者佚名  2006-03-04
窄屏简体版  字體: |||超大  

只要看过OSWorkflow的抽象接口AbstractDescriptor方法的人,我相信你们的心情和我一样的糟糕!!而让我心情如此糟糕的原因就出在XMLizable这个接口上,我们来看看这个接口的定义

/*

* Copyright (c) 2002-2003 by OpenSymphony

* All rights reserved.

*/

package com.opensymphony.workflow.util;

import java.io.PrintWriter;

import java.io.Serializable;

/**

* DOCUMENT ME!

*

* @author $author$

* @version $Revision: 1.2 $

*/

public interface XMLizable extends Serializable {

//~ Static fields/initializers /////////////////////////////////////////////

public static final String INDENT = " ";

//~ Methods ////////////////////////////////////////////////////////////////

public void writeXML(PrintWriter writer, int indent);

}

问题就出现在writeXML方法!这就等于是用户希望你把生成的xml文件给他,而你却说:给什么,从控制台COPY一份嘛,笨蛋!

动手修改了AbstractDescriptor方法的实现,而实现的方法很简单-屏蔽writeXML方法(在这里我发现抽象类实现某个接口的时候,不需要去实现接口的方法!),并为其提供getXML方法。

/*

* Copyright (c) 2002-2003 by OpenSymphony

* All rights reserved.

*/

package com.company.workflow.loader;

import com.opensymphony.workflow.util.XMLizable;

import java.io.PrintWriter;

import java.io.Serializable;

/**

* AbstractDescripter

* @author killvin@hotmail.com

*/

public abstract class AbstractDescriptor implements XMLizable, Serializable {

//~ Instance fields ////////////////////////////////////////////////////////

private AbstractDescriptor parent;

private boolean hasId = false;

private int id;

//~ Methods ////////////////////////////////////////////////////////////////

public void setId(int id) {

this.id = id;

hasId = true;

}

public int getId() {

return id;

}

public void setParent(AbstractDescriptor parent) {

this.parent = parent;

}

public AbstractDescriptor getParent() {

return parent;

}

public boolean hasId() {

return hasId;

}

/**

* @deprecated getXML();

*/

public void writeXML(PrintWriter writer, int indent)

{

}

/**

* get xml descripter

* @return

*/

public abstract String getXML();

}

总结

1。接口的定义来源于对类方法级别的抽象,没有高层次的抽象能力就先不要抽象接口,免得害人。

2。抽象类实现了接口,并不需要你去实现接口声明的方法-JAVA语法

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航