使用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