这可能是一个稍微不同的答案,你正在寻找(!)...
与“外部接口”(例如打印机,点钞机等绘制)总是抽象的事物工作时。您可能想实施策略 - Pattern Strategy。
您为现金抽奖的接口:
public interface ICashDrawer
{
void Open();
}
的提供实现:
- 一个策略是使用COM打开一类画
- 另一个东西像拨打
Debug.WriteLine
的电话那样简单,因此在开发过程中不需要连接到PC的现金提取
例如
public class ComPortCashDrawer : ICashDrawer
{
public void Open()
{
// open via COM port etc
}
}
public class DebugWriterCashDrawer : ICashDrawer
{
public void Open()
{
Debug.WriteLine("DebugWriterCashDrawer.Open() @ " + DateTime.Now);
}
}
再次打印有打印的界面,需要的数据:
public interface IRecieptPrinter
{
bool Print(object someData);
}
然后你让一个或多个实现。
- 基本打印机
- 专业标签打印机
- 一个基于文本的一个保存到文件...
例如
public class BasicRecieptPrinter : IRecieptPrinter
{
public bool Print(object someData)
{
// format for a basic A4 print
return true; // e.g. success etc
}
}
public class SpecificXyzRecieptPrinter : IRecieptPrinter
{
public bool Print(object someData)
{
// format for a specific printer
return true; // e.g. success etc
}
}
public class PlainTextFileRecieptPrinter : IRecieptPrinter
{
public bool Print(object someData)
{
// Render the data as plain old text or something and save
// to a file for development or testing.
return true; // e.g. success etc
}
}
关于SDK,如果下您的轨道,你需要它由于某种原因,你写使用SDK实现。随着时间的推移,您可能会有多种方式与不同的外部设备进行连接。客户可能会得到一个新的现金抽奖等等等。
这是明确的,我可以充实我的意思,如果你想,但你可能会得到我的漂移。
您的应用程序在启动时将自己设置为相应的实现,您可能还想看看Dependency injection以及如果使用container来解析类型,您会发现更容易。
var printer = container.Resolve<IRecieptPrinter>();
PK :-)
我有很多POS系统有史以来一天的工作! – ChaosPandion 2010-03-15 16:42:48
过去5年发布的打印机是否没有Windows驱动程序? – jmucchiello 2010-04-06 15:18:48