一、概念
- 原型设计模式是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
二、场景
- 创建对象性能低的时候就使用原型模式。
三、实现
- 条件
- C#
- 场景
- 已下载视频为场景,实现原型设计模式。
- 实现
-
新建视频领域类类,类名: Video 继承 ICloneable
using System.IO.Enumeration; using System.IO; using System.Security.AccessControl; using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.CompilerServices; using System; using System.Text; namespace 新建文件夹__2_ { [Serializable] public class Video:ICloneable { public int ID{get;set;} public string Name {get;set;} public Video1 video1 {get;set;} //浅拷贝[只复制引用,基本类型复制值] //public object Clone() //{ //return this.MemberwiseClone(); //} //深拷贝 [直接拷贝一个对象,直接赋值] //使用二进制的方式克隆一个对象 public object Clone() { try{ MemoryStream memoryStream = new MemoryStream(); BinaryFormatter binaryFormatter = new BinaryFormatter(); binaryFormatter.Serialize(memoryStream,this); memoryStream.Position = 0; return binaryFormatter.Deserialize(memoryStream); } catch(Exception ex) { System.Console.WriteLine(ex.Message); } return null; } } } -
新建视频1领域类类,类名: Video1
using System.Runtime.CompilerServices; using System; namespace 新建文件夹__2_ { [Serializable] public class Video1 { public int ID{get;set;} public string Name {get;set;} } } -
入口函数
using System.ComponentModel.DataAnnotations; using System.Xml.Schema; using System.Net.Http.Headers; using System; namespace 新建文件夹__2_ { class Program { static void Main(string[] args) { Video video = new Video(); video.ID = 1; video.Name = "java"; var video1 = new Video1(); video1.ID = 11; video1.Name = "javaClone"; video.video1 = video1; //克隆对象 Video vi = (Video)video.Clone(); vi.ID = 2; vi.Name = "C#"; vi.video1.ID= 22; vi.video1.Name = "C#Clone"; //输出 System.Console.WriteLine($"对象1:{video.ID}--{video.Name}--{video.video1.ID}---{ video.video1.Name}"); System.Console.WriteLine($"克隆对象:{vi.ID}--{vi.Name}--{vi.video1.ID}---{ vi.video1.Name}"); } } }
-
四、优缺点
- 优点
- 性能高
- 逃避构造函数的约束
- 缺点
- 使用克隆方法需要全局进行考虑,一个新的类可以适用克隆,对于已有的类不一定很容易,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候

被折叠的 条评论
为什么被折叠?



