公司网站制作都需要图片,设计师互动平台,如何寻找客户,一个做二维码问卷调查的网站原型模式#xff08;Prototype Pattern#xff09;
原型模式#xff08;Prototype Pattern#xff09; 是用原型实例指定创建对象的种类#xff0c;并且通过拷贝这些原型创建新的对象。原型模式是一种创建型设计模式。也就是用一个已经创建的实例作为原型#xff0c;通过…原型模式Prototype Pattern
原型模式Prototype Pattern 是用原型实例指定创建对象的种类并且通过拷贝这些原型创建新的对象。原型模式是一种创建型设计模式。也就是用一个已经创建的实例作为原型通过复制该原型对象来创建一个和原型相同或相似的新对象。C# 提供了 ICloneable 接口用 C# 实现原型模式很简单。
1使用Object的MemberwiseClone() 方法
using System;
using System.Text;
namespace ConsoleApplication
{public class WebSite{public string Name { get; set; }public string Url { get; set; }static WebSite webSite new WebSite(){Name cjavapy,Url https://www.cjavapy.com};/// /// 原型模式:解决对象重复创建的问题/// 通过MemberwiseClone来clone新对象内存操作直接复制的避免重复创建/// Object有 MemberwiseClone() 方法默认浅克隆/// /// public static WebSite CreateInstancePrototype(){return (WebSite)webSite.MemberwiseClone();}}class Program{static void Main(string[] args){var objWebSite.CreateInstancePrototype();Console.WriteLine(Name{0},Url{1},obj.Name,obj.Url);Console.ReadKey();}}
} 2使用ICloneable接口
using System;
using System.Text;
namespace ConsoleApplication
{public class WebSite : ICloneable{public string Name { get; set; }public string Url { get; set; }static WebSite webSite new WebSite(){Name cjavapy,Url https://www.cjavapy.com};/// /// 原型模式:解决对象重复创建的问题/// 通过MemberwiseClone来clone新对象内存操作直接复制的避免重复创建/// /// public static WebSite CreateInstancePrototype(){return (WebSite)webSite.MemberwiseClone();}public object Clone(){return new WebSite() { Name this.Name, Url this.Url };}}class Program{static void Main(string[] args){var obj1 new WebSite(){Name cjavapy,Url https://www.cjavapy.com};var obj2 (WebSite)obj1.Clone();Console.WriteLine(Name{0},Url{1}, obj2.Name, obj2.Url);Console.ReadKey();}}
}