二十三种设计模式之原型模式的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#,WinForm ,WPF,Silverlight,WCF以及MS Sql Server 2000/2005/2008/2012 Oracle 9i/10g/11g数据库系统的ERP,CRM,企业进销存等各种数据库管理系统开发。Asp.net,Asp.net mvc,Webservice,WCF, Webapi等服务程序开发。
基于Oracle MySQL MSSql postgresql各种数据库的管理系统数据同步服务。以及基于MapXtreme, Arcgis Engine ,以及基于Arcgis for silverlight/Javascript的WebGIS等相关的GIS系统二次开发。基于Windows 10 Mobile的移动端开发方案。针对各种系统的二次开发维护,并提供相关开发的技术性支持,如程序BUG解决,应用系统架构,技术难题攻克等相关技术服务。
联系方式: QQ :80163278(devgis) 邮箱:devgis@qq.com