例如,我有几个不同的商家客户,我处理交易。他们需要不同的衡量标准来确定欺诈行为,其中许多是常见的。我想要有一些效果:
class Fraud
{
}
class InvalidCheckFraud extends Fraud
{
}
class NotAMemberFRaud extends Fraud
{
}
class CustomerLooksFunnyFraud extends Fraud
{
}
等...
我希望能够使用如下命令运行零到多个扩展欺诈类:
$fraudCheck = new Fraud();
$fraudCheck->checkMerchant($merchId);
我不介意以一种完全成熟的方式解决这个问题,但如果它已经被弄清楚了,我想走那条路。
我用PHP编写代码,但使用任何其他语言的引用都可以。
答案 0 :(得分:3)
看起来你正在寻找像Strategy pattern。
这样的东西您应该为接受Fraud
的<{1}}类定义一个界面:
$merchId
然后实现每个子类:
interface Fraud {
public function check($merchId);
}
然后,创建一个检查每个的上下文类:
class InvalidCheckFraud implements Fraud {
public function check($merchId) {
// do something and return
return true;
}
}
class NotAMemberFraud implements Fraud
{
public function check($merchId) {
// do something and return
return false;
}
}
答案 1 :(得分:0)
您的Fraud类应该被称为FraudChecker或类似的东西,并且有一个可以检查的Fraud子类列表,或者实现某些接口的类。然后你只需循环检查每个检查。