代码之家  ›  专栏  ›  技术社区  ›  Rachel

Java实现:所需方法的讨论

  •  1
  • Rachel  · 技术社区  · 14 年前

    问题

    我想实施 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 回复  |  直到 14 年前
        1
  •  1
  •   djna    14 年前

    问题:验证 所有交易信息 其他交易所 可获得的

    这里有几个问题,我将重点讨论一个:“所有信息都可用”,但简单地说,还有两个问题

    1. 我们怎么知道“所有”是什么意思?每一个交易所都需要弄清楚它应该处理哪些其他交易所。在现实世界中,由于时区差异,此列表可能会逐日更改(不同的交易所可能因公共假日而关闭)和逐小时更改。因此,要想得到这个名单上应该有哪些人可能很难。
    2. 交换是什么意思?很可能你不会有一台机器来代表交换。一个交易所的几个代表中,可能有一个“可用”就足够了。

    这让我想到了一个主要问题:“可用”是什么意思?让我们集中讨论ExchangeA和ExchangeB(如果A和B可以达成一致,那么我们使用的规则可以扩展到A->C、A->D、B->C等),我们可以考虑A是否可以使用B的几种不同含义:A是否可以在网络级别上ping B?A最近是否收到(最近如何?)来自B的消息,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必须解释这些“听者”。假设每5分钟就有一条消息要发送一次,而有一条消息8分钟内还没有到达——那么糟糕吗?假设有一条消息丢失了,但其余的都已发送?假设有一些是无序交付的?你需要定义你的规则。你需要假设网络确实偶尔会出现故障,很小的延迟就会发生。

    接下来有各种各样的问题,例如B如何知道如何告诉A它的可用性。也许一个发布/订阅方法是合适的?或者应该有一个所有交易所都在谈论的中央登记处,每个交易所只问登记处“大家都起来了吗?”

        2
  •  0
  •   Amir Afghani    14 年前

    在理解了你的问题之后:

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

    首先创建以下两个类:

    public class NYStockExchange implements Exchange { 
    
    }
    
    public class MyTransparencyChecker implements TransparencyChecker { 
    
    }
    

    并编译。

    您会注意到,您将得到错误,因为您没有在这两个类中的任何一个中实现方法。从实施开始 getName() 在里面 NYStockExchange . 这应该很容易,它应该只返回一个返回 "NYStockExchange" .

    重新编译。您会注意到需要实现的方法少了一个。冲洗并重复。回来询问您在实现特定方法时遇到的问题,以及您的确切问题是什么。