Jakarta-Common-Chain使用笔记

可以在你需要定义和执行一些顺序操作的时候采用Commons Chain。

下载地址:http://commons.apache.org/downloads/download_chain.cgi

五个工作类:

GetCustomerInfo.jar

package demo.chain;import org.apache.commons.chain.Command;import org.apache.commons.chain.Context;public class GetCustomerInfo implements Command ...{   public boolean execute(Context context) throws Exception ...{     System.out.println("Get customer info");     context.put("customerName","George Burdell");     return false;   }}

TestDriveVehicle.jar

package demo.chain;import org.apache.commons.chain.Command;import org.apache.commons.chain.Context;public class TestDriveVehicle implements Command ...{   public boolean execute(Context context) throws Exception ...{     System.out.println("Test drive the vehicle");     return false;   }}

NegotiateSale.jar

package demo.chain;import org.apache.commons.chain.Command;import org.apache.commons.chain.Context;public class NegotiateSale implements Command ...{   public boolean execute(Context context) throws Exception ...{     System.out.println("Negotiate sale");     return false;   }}

ArrangeFinancing.jar

package demo.chain;import org.apache.commons.chain.Command;import org.apache.commons.chain.Context;public class ArrangeFinancing implements Command ...{   public boolean execute(Context context) throws Exception ...{     System.out.println("Arrange financing");     return false;   }}

CloseSale.jar

package demo.chain;import org.apache.commons.chain.Command;import org.apache.commons.chain.Context;public class CloseSale implements Command ...{   public boolean execute(Context context) throws Exception ...{     System.out.println("Congratulations " +context.get("customerName") +", you bought a new car!");     return false;   }}

测试代码:

package demo;import org.apache.commons.chain.Command;import org.apache.commons.chain.Context;import org.apache.commons.chain.impl.ChainBase;import org.apache.commons.chain.impl.ContextBase;import demo.chain.ArrangeFinancing;import demo.chain.CloseSale;import demo.chain.GetCustomerInfo;import demo.chain.NegotiateSale;import demo.chain.TestDriveVehicle;public class SellVehicleChain extends ChainBase ...{   public SellVehicleChain() ...{     super();     addCommand(new GetCustomerInfo());     addCommand(new TestDriveVehicle());     addCommand(new NegotiateSale());     addCommand(new ArrangeFinancing());     addCommand(new CloseSale());   }   public static void main(String[] args) throws Exception ...{     Command process = new SellVehicleChain();     Context ctx = new ContextBase();     process.execute(ctx);   }}

也可以使用xml文件进行配置:新建chain-config.xml文件如下:

                              

新建SellVehicleContext.jar文件

package demo;import org.apache.commons.chain.impl.ContextBase;public class SellVehicleContext extends ContextBase ...{   private static final long serialVersionUID = 6954127190729021870L;   private String customerName;   public String getCustomerName() ...{     return customerName;   }   public void setCustomerName(String name) ...{     this.customerName = name;   }}

测试类如下:

package demo;import org.apache.commons.chain.Catalog;import org.apache.commons.chain.Command;import org.apache.commons.chain.Context;import org.apache.commons.chain.config.ConfigParser;import org.apache.commons.chain.impl.CatalogFactoryBase;public class CatalogLoader ...{   private static final String CONFIG_FILE = "/demo/chain-config.xml";   private ConfigParser parser;   private Catalog catalog;   public CatalogLoader() ...{     parser = new ConfigParser();   }   public Catalog getCatalog() throws Exception ...{     if (catalog == null) ...{       parser.parse(this.getClass().getResource(CONFIG_FILE));     }     catalog = CatalogFactoryBase.getInstance().getCatalog();     return catalog;   }   public static void main(String[] args) throws Exception ...{     CatalogLoader loader = new CatalogLoader();     Catalog sampleCatalog = loader.getCatalog();     Command command = sampleCatalog.getCommand("sell-vehicle");     Context ctx = new SellVehicleContext();     command.execute(ctx);   }}

Chain简明手册:http://blog.donews.com/foxgem/archive/2005/08/05/495938.aspx

再发展下来才有了:大霞美的花卉基地和清源山的花博园。

Jakarta-Common-Chain使用笔记

相关文章:

你感兴趣的文章:

标签云: