首页 > 代码库 > 二十三种设计模式之原型模式的C#实现
二十三种设计模式之原型模式的C#实现
原型模式就是通过拷贝快速创建一个新的对象
本例UML如图
ColorBase
[Serializable] public abstract class ColorBase { public int R = 0; public int G = 0; public int B = 0; public virtual ColorBase Clone() { return this; } public virtual void ShowMe() { Console.WriteLine(string.Format(" r={0} g={1} b={2}", R, G, B)); } }
RGBAColor
[Serializable] public class RGBAColor : ColorBase { public override ColorBase Clone() { ColorBase color; MemoryStream memoryStream = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(memoryStream, this); memoryStream.Position = 0; color = (RGBAColor)formatter.Deserialize(memoryStream); return color; } }
ColorManager
public class ColorManager { RGBAColor rgbColor = new RGBAColor(); public ColorBase ColorBase { get { throw new System.NotImplementedException(); } set { } } public ColorBase GetNewColor() { return rgbColor.Clone(); } }
Main方法中进行测试
static void Main(string[] args) { ColorManager colorManager = new ColorManager(); ColorBase red = colorManager.GetNewColor(); red.R = 255; ColorBase green = colorManager.GetNewColor(); green.G = 255; ColorBase blue = colorManager.GetNewColor(); blue.B = 255; red.ShowMe(); green.ShowMe(); blue.ShowMe(); Console.Read(); }
执行结果
二十三种设计模式之原型模式的C#实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。