我想创建一个支付模块,这个模块将有一个用户可以支付产品的表格,付款完成后我想在几个数据库表上保存支付信息。我想在不同的公司中使用这个模块,每个公司处理持久数据的方式不同,只需将数据保存在一个表中,将其他数据保存在两个或树表中,我的想法是实现一个观察者模式,其中发布者(作为支付类)可以将付款信息推送到表类(作为订阅者),以便这些可以将数据保存到他们的表中。
这是正确使用的模式吗?有什么建议吗?
由于
答案 0 :(得分:1)
如果我理解正确,您应该从支付提供商处获得响应的黑匣子实施,并且一次该模块可以被一家公司使用。确实,你的想法很好看。我的建议可能是使用Command设计模式。对于每种类型的响应:错误,拒绝付款,取消用户付款,成功付款等,每家公司都有自己的实施方案。并且每个具体命令将实现不同的支付状态。与SuccessfulPayment一样,CanceledPayment ...实现接口ICOmmand。您可以留给公司的这些具体实施。对您而言,唯一需要的是公司对付款提供商的响应的具体处理结果。例如,您将使用ICommand接口继续处理您自己的业务逻辑。