我使用策略模式,这意味着使用接口和一些实现它的类。使用Factory模式后,创建一个具有接口类型的实例。
每个类都有方法validate()
。它类似于:
public function validate($file)
{
$allowedFileTypes = config('app.allowedFileTypes');
$maxFileSize = config('app.maxFileSize');
$validator = Validator::make(
array('file' => $file),
array('file' => array(
'required',
'mimes:' . $allowedFileTypes . '|max:' . $maxFileSize)));
if ($validator->fails()) {
//
}
}
}
这是在接口中描述的方法,并且此方法放置在每个类中并进行微小更改。所以我尝试使用DRY principle
并取消类的验证代码。但我不知道以哪种形式做到这一点:
答案 0 :(得分:1)
我认为有很多方法可以做到这一点,而且没有一个正确的答案。如果只有一个这个函数的实例,并且它不需要引用$this
,那么我认为最正确的答案是在类之外创建一个独立的函数。 / p>
看起来你正在做与config
类似的事情,虽然我觉得这个功能有点问题,因为它显然似乎使用全局/单身状态。