首页 > 新闻系统 > 编程天地 > 文章正文

Java Q&A: 抽象类和接口实例学习

2007-12-12 13:31:53 来源:中国自学编程网 作者:转载 点击:
在Java中,什么时候该用抽象类,什么时候该用接口?下面的文章将通过实例,而不是从理论的角度给你一个清晰的回答,让你有可能获得醍醐灌顶般的彻悟。以下是原文翻译。

  ticker=bvsn
  
  此处的ticker是 "键",bvsn是 "值"。键告诉接收者,值bvsn是一个股票代号。
  
  如果在yahoo查看股票行情,你要发送这样的URL: http://finance.yahoo.com/q
  
  以及两对键/值:
  · s - 股票代号
  · d - 查看级别(基本信息,详细信息等)
  
  所以,想要查看bvsn,需要POST下面的消息: http://finance.yahoo.com/q?s=bvsn&d=v1
  类似地,如果是Quicken的股票行情系统,你得发送这样的URL:http://www.quicken.com/investments/quotes/
  以及一对键/值:
  symbol - 股票代号
  所以,在Quicken查看bvsn,需要POST下面的消息: http://www.quicken.com/investments/quotes/?symbol=bvsn
  
  下面的代码是针对这两种Message的实现:
  
public class YahooStockQuote extends AbstractMessage {
  private String _ticker;
  
  private final static String _TICKER_KEY = "s";
  private final static String _D_VALUE  = "v1";
  private final static String _D_KEY  = "d";
  
  public YahooStockQuote( String ticker ) 
  {
  _ticker = ticker;
  }
  public void setTicker( String ticker ) 
  {
  _ticker = ticker;
  }
  
  protected String [][] values() 
  {
  String [][] values = {
  { _TICKER_KEY, _ticker },
  { _D_KEY, _D_VALUE }
  };
  return values;
  }
}
  
以及:
public class QuickenStockQuote extends AbstractMessage 
{
  private String _ticker;
  
  private final static String _TICKER_KEY = "symbol";
  
  public QuickenStockQuote( String ticker ) 
  {
  _ticker = ticker; 

   }
  public void setTicker( String ticker ) 
  {
  _ticker = ticker;
  }
  
  protected String [][] values() 
  {
  String [][] values = {
  { _TICKER_KEY, _ticker }
  };
  return values;
  }
}
  
  这些Message只知道如何处理它们的数据以及构造二维 "键/值对" 数组。
  
  程序示例
  
  看看下面的股票信息示例程序:
  
public class QuoteGetter
{
  public final static void main( String [] args ) 
  {
  if( args.length != 2 ) 
  {
  System.out.println( "Incorrect Useage:" );
  System.out.println( "java QuoteGetter <quicken or yahoo> <TICKER>" );
  return;
  }
  
  String service = args[0];
  String ticker  = args[1];
  
  Message message = null;
  MessageBus bus  = null;
  if( service.equalsIgnoreCase( "quicken" ) )
  {
  bus = 
  new HttpMessageBus( "
http://www.quicken.com/investments/quotes/" );
  message = new YahooStockQuote( ticker );
  }
  else // default to yahoo
  {
  bus = 
  new HttpMessageBus( "
http://finance.yahoo.com/q" );
  message = new QuickenStockQuote( ticker );
  }
  
  try
  {
  String response = sendMessage( message, bus );
  System.out.println( response );
  }
  catch( Exception ignore ) 
  {
  System.out.println( "Lookup Failed for: " + ticker );
  ignore.printStackTrace();
  }
  }
  
  private static String sendMessage( Message message, MessageBus bus ) 
  throws BusException
  {
  return message.send( bus );
  }
  
}
9 7 3 1 2 3 4 5 4 8 :

精彩推荐
焦点大图推荐
本类热门文章

论坛美图

本周软件下载排行

广告联系 | 版权说明 | 意见建议 | 加入收藏 | 军网站群 [ 军软件园 - 军软件商城 - 军软件园论坛 ]

电信与信息服务业务经营许可证:京ICP证050203