Java实现:所需方法的讨论

时间:2010-08-13 15:31:50

标签: java

问题

我想实施TransparencyChecker Interface,这将验证来自网络中任何交易所的所有交易信息都可用。

问: TransparencyChecker Inferface将如何实施?

问题背景

证券交易所决定相互分享交易信息。如果一个交易所想要与另一个交易所共享信息,那么 安装传出网络链接以转储所有事务。网络链接是单向的,交换机也共享交易,具有 从传入的网络链接收到。

代码

interface Exchange {

 /**
 * Returns list of names of exchanges which receive all trading information
 * from this exchange.
 * @return list of exchanges
 */
 Set<String> getOutgoingConnections ();

 /**
 * Name of the exchange
 * @return name
 */
 String getName ();
}

interface TransparencyChecker {

 /**
 * Checks the transparency of the network. The network is the
 * collection of exchanges and each of them has a unique name.
 * @param exchanges list of exchanges in the network
 * @return true if all trading information is available for every exchange
 */
 boolean isTransparent (Set<Exchange> exchanges);

}

2 个答案:

答案 0 :(得分:1)

问题:验证来自其他交易所所有交易信息 是否可用

这里有几个问题,我将重点关注一个:“所有信息都可用”,但简单地说,提到另外两个问题

  1. 我们怎么知道“全部”是什么意思?每个交易所都需要弄清楚它应该处理的其他内容。在现实世界中,由于时区差异,这个列表可能每天都在变化(由于公共假期,不同的交换可能会关闭)和逐个小时。因此,获取那份应该在那里的名单可能很棘手。
  2. 交易所意味着什么?很可能你没有一台机器代表一个Exchange。将交易所的几位代表中的一位代表“可用”就足够了。
  3. 这让我想到了一个主要问题:“可用”是什么意思?让我们只关注ExchangeA和ExchangeB(如果A和B可以同意我们使用的规则,我们可以扩展到A-> C,A-> D,B-> C等)我们可以考虑几种不同的含义用于决定B是否可用:可以在网络级别进行ping B吗? A收到了来自B的最近(最近?)消息,Can A能够理解从B收到的消息吗?也许B需要发送几条消息来描述它的状态,我们是否收到了它们?这些消息是否合理?

    我建议A可以通过在某个约定的时间间隔内接收来自B的消息来确定B的可用性。这些消息可能就像

    一样简单
    "Hello, I'm B, at 13:15 GMT on 21st January 2011, I am functioning correctly"
    

    或更复杂的

    "Hello, I'm B, at 13:15 GMT on 21st January 2011, I am about to send you my current status,
     it will comprise 3 messages including this one. Data XXX, YYY ..."
    "2 of three messages from B, at 13:15 GMT on 21st January 2011,  Data XXYX, QQQ ..."
    "3 of 3 from B, at 13:15 GMT on 21st January 2011,  Data PPP, QQQ ..."
    

    现在A必须解释这些“Hearbeats”。假设消息每5分钟到期,而且有一个消息没有到达8分钟 - 这是不是很糟糕?假设有一条消息未命中,但所有其他消息都已发送?假设有些交付不正常?您需要定义规则。你需要假设网络偶尔会出现故障,会发生小的延迟。

    在此之后有各种各样的问题,例如B如何知道告诉A它是否可用。也许Pub / Sub方法是合适的?或者是否应该有一些所有技术人员都在谈论的中央注册机构,每个交易所只是要求注册管理机构“是否适合所有人?”

答案 1 :(得分:0)

理解了你的问题:

我需要帮助创建一个实现TransparencyChecker接口的类,我将提供以下建议(这看起来像是一个学术练习,而不是一个工作项目):

首先创建以下两个类:

public class NYStockExchange implements Exchange { 

}

public class MyTransparencyChecker implements TransparencyChecker { 

}

并编译。

你会注意到你会得到错误,因为你没有在这两个类中的任何一个中实现这些方法。首先在getName()中实施NYStockExchange。这应该很简单,它应该只返回一个返回"NYStockExchange"的字符串。

再次编译。你会注意到需要实现的方法少一个。冲洗并重复。回过头来看一下您在实施时遇到的特定方法的问题,以及您遇到的确切问题。