1

私には 1 つのトップクラスがあります。たとえば、学校です。

そして、School クラスを拡張するいくつかのクラス。

通常、子クラスの 1 つを呼び出す必要がある場合は、次を使用します。

new Math('aaa')、またはnew English(array('foo'));

すべての子クラスには異なるパラメーターがあります。

さて、何が良いですか:

1)Schoolクラスでファクトリメソッドを作成するため、次のようになります。

School::Factory('aaa')Math('aaa')指定されたパラメータに基づいてクラスを Factory() メソッドに返します

2)または単に各子クラスを直接呼び出すだけですか?

編集:私は2つの子クラスしか持っていません.私の問題は、これを行うことが本番コードで少し単純化する価値があるかどうかわからないことです. どのパラメーターが Factory メソッドに渡されたかを確認し、この情報に基づいて、これら 2 つのクラスのいずれかを呼び出します。どう思いますか?

一方では、より単純なコードを記述できるようになります。一方、新しい子クラスを追加する必要があるたびに (それを行う機会はほとんどありませんが)、Factory() メソッドも変更する必要があるため、ここに依存関係があります。

4

1 に答える 1

0

1)Schoolクラスでファクトリメソッドを作成するため、次のようになります。

あなたは学校を拡張する2つのクラスがあると言います。したがって、学校は工場として機能するべきではありません。親クラスは、その子/サブクラスについて何も知らないはずです。

2)または単に各子クラスを直接呼び出すだけですか?

または、たとえば、「CourseFactory」または「LectureFactory」を使用することもできますcreateMath( aaa )。場合によっては、そうかもしれませんcreateLecture("math")

ただし、Math または Englishが School を拡張する例では意味がありません(MathSchool と EnglishSchool を意味する場合を除きますが、MathCourse と EnglishCourse と理解しました)。

于 2013-03-08T15:33:50.220 に答える