2011-09-29 70 views
1

我正在尝试实现请求/响应客户端。这是它的基本实现。实现请求响应设计

Class Request 
{ 
    prepareRequest1(); 
    prepareRequest2(); 
} 

Class Response 
{ 
    processResponse1(); 
    processResponse2(); 
} 

Class Client 
{ 
    connect(); 
    sendRequest(); 
} 

myrequest = new Request(); 
client = new Client (myserver); 
my $rawResponse1 = client.sendRequest (myrequest.prepareRequest1()); 

myresponse = new Response(); 
myresponse.processResponse1 ($rawResponse1); 

我有三个类 - 即请求,响应和客户端。请求类包含特定于请求的功能。这些请求是XML请求。除了少数初始标签(例如sessionid等)之外,XML请求没有任何共同之处。所有其他XML参数都是特定于请求类型的。所以,目前我正在通过为每个请求创建一个单独的函数来处理它。我明白它有一个可扩展性问题,但请建议我可以在此处应用的其他最佳方法。

与请求类似,对每个请求的响应都需要特定的处理。所以我有一个单独的功能,特定于每种类型的响应我期待。通常,您可以假设请求和响应之间存在1:1映射。

最后是手持连接的客户端类。

我有近50个这样的请求和响应,我打算用这种方法来实现。由于我处于开发的初始阶段,请为我推荐一些改进/最佳实践来实施此类请求/响应。

回答

0

如果您在代码之外保留请求和响应的映射,那么它最好。更易于管理。保留一个xml配置文件,其中存储了与特定类型的xml消息绑定的请求和响应的类名。然后,您可以获取类名并转到该类来处理您的请求和响应。最好有独立的类来处理这些消息,而不是单独的方法。这更具可扩展性。确保你有所有你的请求类的接口,并且你的响应类也是一样的。这将可以很容易地通过修改XML配置文件方便地更换您的请求响应类..

希望你得到它:)

+0

我几乎50多个不同类型的消息(请求/响应)。有50个班,每个留言一个班是好的。 – rpg

+0

只要你觉得易于管理,上课就不算犯罪。但这又是我的看法。但是,如果你不想管理这些类,并且在请求和类之间有一个1-1映射,就像我建议的那样,你可以总是试着将'请求'一起聚合在一起,并使用同一个类来服务它们,但是它最好保留这个映射到哪个xml请求 - >映射到哪个类 - >映射到xml配置文件中的代码之外的哪个方法。这给你最大的灵活性。你将实例化你的类并通过反射调用方法 – sethu

+0

谢谢sethu,这看起来更有希望。 – rpg