对于我们目前正在构建的发票系统,我很难理解基于状态的功能。该系统将支持发票的计算、人工审批、打印和存档。
起初我认为我们应该使用状态模式来对此进行建模。发票将是上下文,它将打印、归档等委托给其当前分配的状态。
但这显然是个坏主意,因为不同的状态(创建、批准、打印、存档)不应该支持相同的操作。例如,您不应该能够打印以前未经批准的发票。为不受支持的操作抛出异常将违反 LSP。我在这里找到了这个问题的一般描述。
有没有人有想法,如何适当地实施这个?
PS:我知道这听起来像是一些蹩脚的家庭作业,但事实并非如此;我需要这个用于现实世界的系统。