私は、渡される列挙型に基づいて異なる具体的な型を返すファクトリクラスを構築する必要があるユースケースを持っています。しかし、これらの型のそれぞれは、異なるコンストラクタパラメータを必要とします。だから、その場合、異なる署名を持つ複数のメソッドを持つことは理にかなっているのでしょうか、それとも全く工場のパターンではありませんか?ファクトリメソッドのパターンで異なるオーバーロードを使用することができます
私は
class CarFactory
{
public ModelS TeslaMaker (List<Battery> batteries){/*return ModelS*/}
public Mustang FordMaker (Engine engine) {/*return a Mustang*/}
}
代わりの
class CarFactory
{
public Car GetCar(CarType carType) //where CarType is an enum (Ford=0,Tesla=1)
{
switch(carType)
{ case CarType.Ford: return new Mustang(); }//just an example
}
}
EDIT言うようなものと思っています。私の場合、私は実際にクラスの家族を返す必要が を。したがって、テスラの場合は、ModelS、ModelSService、ModelSWarrantyなどを返します。そこで、ここで与えられた提案をラップする抽象ファクトリのアプローチに進むつもりです。
最初のものは実際に列挙部分を持っていませんが、 – Nyerguds
@ニーアードゥーズ - はい、それが工場のパターンであったとしても疑いはありませんでした。 – arviman