Le design factory permet d'encapsuler et donc de faire des vérification et du code propres et surtout debugable très facilement.
C'est du PHP5.Code PHP :
<?php
interface MyInterface
{
public function myFunction();
}
class MyFactory
{
public static function build($sType)
{
$oObject = new $sType();
if (!($oObject instanceof MyInterface))
throw new IllegalArgumentException();
return new $sType();
}
}
$oMyObject = MyFactory::build('MyClass');
Si la classe MyClass n'est pas une implementation de MyInterface, MyFactory::build() lève une exception. C'est pas super long à écrit, et au moins on est sur de pas faire de bêtises. Il faudrait aussi peut être faire un test sur la validité de la classe construite mais bon...