父类是否有一个通用的设计模式来调用它的几个子类

时间:2011-11-08 18:22:52

标签: php design-patterns

例如,我有几个不同的商家客户,我处理交易。他们需要不同的衡量标准来确定欺诈行为,其中许多是常见的。我想要有一些效果:

class Fraud
{

}

class InvalidCheckFraud extends Fraud
{

}

class NotAMemberFRaud extends Fraud
{

}

class CustomerLooksFunnyFraud extends Fraud
{

}

等...

我希望能够使用如下命令运行零到多个扩展欺诈类:

$fraudCheck = new Fraud();
$fraudCheck->checkMerchant($merchId);

我不介意以一种完全成熟的方式解决这个问题,但如果它已经被弄清楚了,我想走那条路。

我用PHP编写代码,但使用任何其他语言的引用都可以。

2 个答案:

答案 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子类列表,或者实现某些接口的类。然后你只需循环检查每个检查。