どのようにFactoryを使用する方が良い(正しい)のですか?工場パターンの使用
IPacket info = PacketFactory.CreatePacketObject(PacketType.Info, currentUser, DateTime.Now, " disconnected");
または私はPacketFactoryで第二の方法を投げると、このいずれかを使用する必要がありますか?
IPacket info = PacketFactory.CreatePacketObject(PacketType.Info);
info.CreationTime = DateTime.Now;
info.Creator = currentUser;
info.Data = " disconnected";
または多分?
PacketFactoryコード:
public static class PacketFactory
{
public static IPacket CreatePacketObject(PacketType type)
{
IPacket packetToCreate = null;
switch (type)
{
case PacketType.Info:
packetToCreate = new Info();
break;
case PacketType.Log:
packetToCreate = new Log();
break;
case PacketType.Message:
packetToCreate = new Message();
break;
}
return packetToCreate;
}
public static IPacket CreatePacketObject(PacketType type, Client creator, DateTime creationTime, string data)
{
IPacket packetToCreate = null;
switch (type)
{
case PacketType.Info:
packetToCreate = new Info(creator, creationTime, data);
break;
case PacketType.Log:
packetToCreate = new Log(creator, creationTime, data);
break;
case PacketType.Message:
packetToCreate = new Message(creator, creationTime, data);
break;
}
return packetToCreate;
}
}
言い難い文脈がありません。あなたの簡単な例では、私は全く工場を使用しません。 – CodesInChaos
ファクトリの結果を(例のためではなく)プロダクションコードにキャストしている場合は、それがコードの匂いです。インタフェースを介してのみ、工場の結果を参照してください。 – TrueWill
@TrueWill ok、この場合はどうなっていますか? – Saint