【发布时间】:2013-01-25 08:43:40
【问题描述】:
我需要设计一个收据对象,该对象将在交易中获取行项目并将它们格式化为 40 列显示。将来我还需要另一种格式的常规尺寸打印纸。
交易有不同类型的行项目(项目、cmets、折扣、投标等)。
我的第一个想法是为其中的每一个创建一个接口,以便他们负责格式化自己,并且我可以为我需要的每种收据格式的接口添加一个新方法。我的下一个想法是为我需要的每种收据格式创建一个类,并让它负责查看每行的类型并进行适当的格式化。
所以我的问题是是否存在我可能忽略的更好的设计模式,如果没有,那么是否有充分的理由支持上述设计中的一种而不是另一种?
所以我可以添加如下内容:
public interface IReceiptFormat
{
string FormatFor40Column();
string FormatForRegularPaper();
}
到我的项目、评论等类。或者我可以创建这样的东西:
public ReceiptFormatterFor40Column
{
public Ticket Ticket {get; private set;}
public ReceiptFormatterFor40Column(Ticket ticket)
{
Ticket = ticket;
}
public List<string> GenerateReceipt()
{
var lines = new List<string>();
foreach(var line in Ticket.Lines)
{
// check what type of object line is and add
// add an appropriately formatted string to lines
}
}
}
【问题讨论】:
标签: design-patterns point-of-sale