我需要设计一个收据对象,它将在交易中获取行项目并将它们格式化为 40 列显示。将来我还需要另一种格式的常规尺寸打印纸。
交易具有不同类型的行项目(项目、评论、折扣、投标等)。
我的第一个想法是为这些中的每一个创建一个接口,以便它们负责格式化自己,并且我可以为我需要的每种收据格式的接口添加一个新方法。我的下一个想法是为我需要的每种收据格式创建一个类,并让它负责查看每行的类型并适当地格式化它。
所以我的问题是,是否有更好的设计模式我可能会忽略,如果没有,那么是否有充分的理由支持上述设计中的一种而不是另一种?
所以我可以添加这样的东西:
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
}
}
}