我有一个创建 1-* 类实例的循环。所有类都是一个抽象类的子类,因此它们的响应相同,尽管它们做的事情不同。此循环运行 3 次:创建、验证、运行。但是,我遇到了类之间的业务逻辑。如果已创建,则无法运行。如果已创建,则必须运行。目前,所有这些检查都在循环本身中,它变得混乱,使其不如我最初的想法灵活。
问:有什么方法可以将业务逻辑移到类的验证函数中?
class Parent{
abstract function validate();
abstract function run();
}
class A extends Parent{
function validate(){/*validation*/}
function run(){/*what A does*/}
}
class B extends Parent{
function isClassAthere(){}
function validate(){
// validation
if($this->isClassAthere()) return FALSE; // this is the one I want
}
function run(){/*what B does*/}
}
class C extends Parent{
function isClassBthere(){}
function validate(){
// validation
if($this->isClassBthere()) return TRUE;
}
function run(){/*what C does*/}
}
全部由
foreach( $classnames as $index=>$name ){
$instances[$index] = new $name();
if(!$instances[$index]->validate()) return FALSE;
// Business logic is here, I want to move it to validate()
}
foreach( $instances as $instance ){
$instance->run();
}