问题
我想实施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);
}
答案 0 :(得分:1)
问题:验证来自其他交易所的所有交易信息 是否可用
这里有几个问题,我将重点关注一个:“所有信息都可用”,但简单地说,提到另外两个问题
这让我想到了一个主要问题:“可用”是什么意思?让我们只关注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"
的字符串。
再次编译。你会注意到需要实现的方法少一个。冲洗并重复。回过头来看一下您在实施时遇到的特定方法的问题,以及您遇到的确切问题。