2011-03-11 77 views
0

我大厅,代码架构意见

我需要你的意见什么是最好的在下面的情况。

我从网站(A和B是基类),这是在一个框架DLL编码的分层2个事件类(我们将其命名为“TheLib.dll”)进行因式分解和可重复使用的:

  • 一个儿子1
  • 一个儿子2
  • ...

  • 乙儿子1
  • 乙儿子2
  • ...

然后,我需要一些外部的工具(控制台/ WPF应用程序),将显示每个各该事件的内容时间有一些不同的(属性的一部分)和具体格式为日志为例。但是我得到的事件的基本类型是:A或B,而不是本机类型。

第一种方法是将这些代码粘贴到“TheLibe.dll”与特定toStringxxx方法声明的接口,并将其分配到每一个事件的儿子*和B *儿子

我不是这个迷,如该代码应该在控制台应用程序中,而不是在框架中,因为它不会用在任何其他外部工具中。

所以我用通用的演员是给的GetType通话编码字符串格式直接进入控制台应用程序()

让我知道,如果它是好还是坏,为什么?

新芬”

回答

0

如果您的控制台应用程序可以知道A和B都从他们那里得到的子类型外,还有是不是真的太多错误使用像GetType(),直接做你的应用程序特定的格式在控制台应用程序。只要理解这种方法是不可扩展的。

但是,如果A和B可以被不断地扩展和您的控制台应用程序可以永远不知道有关的所有可能的子类型,而重建它,你最好提供要么toString()接口,因此每个类都可以做自己的格式或print()界面,您可以通过某种输出流的,所以你可以根据传入流的类型的输出格式(例如ostream在C++中派生类,在Java java.io.OutputStream派生类,...)

+0

我大部分在第二种情况下,A和B可以在未来扩展。如果某个类型在控制台应用程序中是未知的,那么我会抛出一个异常,然后我们必须进行编码和重建,但它不是非常可伸缩的,但有人也可能忘记将导出的A或B类型的接口实现到dll中,这也会导致在控制台应用程序中遇到派生类型时没有实现的tostring接口的异常。所以每2种方法都可能导致问题。也许我们必须执行可缩放的方法,如果我们将特定的和唯一的用法编码到dll中,那么我们就必须这样做。 – sinner73 2011-03-14 09:36:30