如何在家用植物卫生体系中创造有活力的工厂方法? 通过动态工厂方法,我指的是工厂方法,根据特定论点的某些方面,可以自动查明哪些物体。 最好不首先在工厂登记。 拥有可能物体的Im OK 位于一个共同地点(目录)。
我想避免你在工厂方法上的典型开关,例如:
public static function factory( $someObject )
{
$className = get_class( $someObject );
switch( $className )
{
case Foo :
return new FooRelatedObject();
break;
case Bar :
return new BarRelatedObject();
break;
// etc...
}
}
我的具体案例涉及工厂,根据该项目建立一个投票存放处。 这些项目都安装了<代码>可检索接口。 与此类似:
Default_User implements Voteable ...
Default_Comment implements Voteable ...
Default_Event implements Voteable ...
Default_VoteRepositoryFactory
{
public static function factory( Voteable $item )
{
// autodiscover what type of repository this item needs
// for instance, Default_User needs a Default_VoteRepository_User
// etc...
return new Default_VoteRepository_OfSomeType();
}
}
我希望能够放弃这些物品的新可溶解物品和烟雾储存库,同时不影响工厂的实施。