我希望写一个类,在实例化的时候可以这样
Message msg=new Message(FriendMessage);
FriendMessage是这个消息的类型。不同类型有不同属性。比如FromUin,ToUin,应该如何写类,使得在实例化的时候可以指定类型?
谢谢!
我希望写一个类,在实例化的时候可以这样
Message msg=new Message(FriendMessage);
FriendMessage是这个消息的类型。不同类型有不同属性。比如FromUin,ToUin,应该如何写类,使得在实例化的时候可以指定类型?
谢谢!
LZ给的信息还是有点模糊,下面是我的理解下写出的代码,希望能对你有所帮助!
//运用LSP 原则+工厂方法 实现松耦合
//类型
public enum MessageType
{
FromUin = 1,
ToUin = 2
}
//基类
public abstract class Message
{
//消息内容
string messge { get; set; }
public abstract void ShowInfo();
}
public class FromUinMessage : Message
{
//新增属性
public string Name { get; set; }
public override void ShowInfo()
{
//......
}
}
public class ToUinMessage : Message
{
//新增属性
public string Color { get; set; }
public override void ShowInfo()
{
//......
}
}
public class UninService
{
private Message _message;
public UninService(MessageType messageType)
{
this._message = UninFactory.GetMessageType(messageType);
}
public void ShowMessage()
{
_message.ShowInfo();
}
}
//工厂方法
public class UninFactory
{
public static Message GetMessageType(MessageType messageType)
{
switch (messageType)
{
case MessageType.FromUin:
return new FromUinMessage();
case MessageType.ToUin:
return new ToUinMessage();
default:
return null;//异常处理
}
}
}