私の質問は、抽象ファクトリを再設計する方法です。
たとえば、車両の次の抽象化を取得します。
interface IEngine { int Power(); }
class Gasoline : IEngine { public int Power() {return 150; }}
class Diesel : IEngine { public int Power() { return 50; }}
interface IFrame { string Name(); }
class Boxed : IFrame { public string Name() { return "Boxed frame"; }}
class Hat : IFrame { public string Name() { return "Hat frame"; }}
interface TransportFactory {
IEngine CreateEngine();
IFrame CreateChassis();
}
class TrailerCar : TransportFactory {
public IEngine CreateEngine() { return new Diesel(); }
public IFrame CreateChassis() { return new Boxed(); }
}
class PrivateCar : TransportFactory {
public IEngine CreateEngine() { return new Gasoline(); }
public IFrame CreateChassis() { return new Hat(); }
}
これで、自家用車またはトレーラー車をインスタンス化できます。
変更を提案する人もいます。トレーラー車のエンジンは、ターボまたはハイブリッドにすることができます。トレーラー専用!自家用車のディーゼルおよびガソリン エンジンは、通常のディーゼル エンジンのままです。だから、私が変更を行う場合:
public enum EngineType { Hybrid, Turbo, }
interface TransportFactory
{
IEngine CreateEngine(EngineType t);
IFrame CreateChassis();
}
クラスを追加できます:
class GasolineHybrid : IEngine
{
public int Power()
{
return 70;
}
}
class GasolineTurbo : IEngine
{
public int Power()
{
return 170;
}
}
class DieselHybrid : IEngine
{
public int Power()
{
return 60;
}
}
class DieselTurbo : IEngine
{
public int Power()
{
return 98;
}
}
いいのですが(!!!) 自家用車関係なし!!! どんなデザインに使えますか?古い抽象化は正しくない?
どうもありがとう!!!