【发布时间】:2017-06-16 01:15:58
【问题描述】:
假设我们在网上商店有一个简单的支付功能。我们想用不同的交易处理器来管理不同的交易:
- 交易可以是付款或退款。
- 交易处理器可以是 Paypal 或 Payplug。
所以我们有以下类:
class PaymentTransaction implements Transaction {
}
class RefundTransaction implements Transaction {
}
class PaypalProcessor implements Processor {
}
class PayplugProcessor implements Processor {
}
正如this answer 中所建议的,我们可以使用以下使用策略 和多态性的类。
class PaymentProcessor {
private Processor processor;
private Transaction transaction;
public PaymentProcessor(Processor processor, Transaction transaction) {
this.processor = processor;
this.transaction = transaction;
}
public void processPayment() {
processor.process(transaction);
}
}
我们假设要使用的处理器和事务是从数据库中给出的。我想知道如何创建 PaymentProcessor 对象。
似乎只有一个方法的抽象工厂类仍然是有效的抽象工厂模式。所以,在这种情况下,我想知道使用 Abstract Factory 是否相关。
- 如果是,如何实现?
- 如果不是,我们是否应该使用 Factory Method 模式和
PaymentProcessorFactory类根据数据库中给出的详细信息创建具有他的两个属性的PaymentProcessor?
在这种情况下使用工厂的最佳做法是什么?
【问题讨论】:
标签: oop design-patterns polymorphism factory