Factoryメソッドの亜流的なもの

スーパークラス

<?php
abstract class Class_super
{
	static function factory(mode)
	{
		if('a' === mode)
		{
			return new Class_sub_a();
		}
		else
		{
			return new Class_sub_b();
		}
	}
}


サブクラスa

<?php
class Class_sub_a extends Class_super
{}


サブクラスb

<?php
class Class_sub_b extends Class_super
{}


呼び出し

<?php
$o_class = Class_super::factory('a');


デザパタとかぜんぜん理解してないけど、この手法ってどうなんだろうか。
メリットとしては呼び出し元でnewするクラスを分岐させる為の条件文を書かなくていいからソースがすっきりする気がする!