首先,我将尝试描述我们试图用C#代码表达的真实世界模型。
我们有一个叫M100的设备。它的目的是读取\写入数据从\卡(塑料或超轻卡,如MIFARE)。它可以有最多3个天线(设备通过天线读写数据)。其中一个天线是内部的(因此,卡可以放在设备表面,设备将能够执行读写操作),另一个是外部的。让我们考虑一下通常的情况。我们有服务站。M100驻留在终端中,并且它有两个外部天线被放置在一束卡片分发机上。卡片分发器是另一种设备,它负责接受和分配卡片,以执行M100的读写操作。因此,卡片分发器从用户那里获取卡片,将其移动到读\写位置,然后M100可以执行读\写操作。M100只能配备一个(内部)天线。因此,我们必须处理主要的案件:有和没有卡片分发机。
我们有一个应用程序与分发机交互,而另一个应用程序使用没有卡片分发器的M100。
我们开发了M100Provider和它的接口IM100Provider。这是一个低级类,它直接与M100交互,通过COM端口传递命令.
我们有一个更高级别的操作,比如AuthorizeOperator、WriteTicket、ReadCard (所有这些操作都需要M100),所以我们开发了M100Communicator类(可能名称在当时并没有反映出它的意图,但稍后我们会考虑这个名称)。M100Communicator是一个单身人士。因为我们需要操作卡片分发器来接受和分配用户,卡片M100Communicator与CardDispensersManager类交互。我们还没有决定是否将它组合成M100Communicator,或者它是否是一个单例(似乎它是一个单例)。
所有这些操作都必须以一种统一的方式执行:
以下是我们所面临的问题:
发布于 2014-04-12 02:08:01
您的问题与本练习描述的软件设计问题完全相同。
与其围绕特定的设备设计代码,不如设计描述读卡过程的抽象。然后,这个抽象可以具体化到特定的设备。如果您以这种方式设计软件,您所面临的问题将在为特定应用程序创建具体对象时得到解决。
https://softwareengineering.stackexchange.com/questions/235757
复制相似问题