设计模式:原型模式
来源:互联网 发布:acs550变频器端口定义 编辑:程序博客网 时间:2024/06/05 17:18
原型模式:用原型实例指定要创建对象的实例,并通过拷贝哲学原型创建新的对象。
结构图:
一般在初始化的信息不发生变化的情况下,克隆是最好的办法。这既隐藏了对象创建的细节,又对性能是大大的提高(减少了new运算的大大的开销);
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { ConcreatePrototype p = new ConcreatePrototype("I"); ConcreatePrototype p2 = (ConcreatePrototype)p.Clone(); Console.WriteLine("Cloned: {0}", p2.Id); } } abstract class Prototype { private string id; public Prototype(string id) { this.id = id; } public string Id { get { return id; } } public abstract Prototype Clone(); } class ConcreatePrototype :Prototype { public ConcreatePrototype(string id):base(id) { } public override Prototype Clone() { return (Prototype)this.MemberwiseClone(); } }}
克隆的操作是调用MemberwiseClone()方法,创建的是当前对象的浅表副本,方法是创建一个新对象,将当前对象的非静态字段复制到新对象。
如果字段是值类型的,则对该字段执行逐位复制,如果字段是引用类型的,则复制引用但不复制引用的对象;因此,原始对象及其副本引用的是同一对象。(也就是说引用的时候对象只有一份,多次修改后以最后一次为主),这时的操作叫做浅拷贝,即被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都依然指向原来的对象。
深复制把引用对象的变量指向复制过的新对象,而不是原有的被引用过的对象。
0 0
- 设计模式:原型模式
- 设计模式------原型模式
- 设计模式 原型模式
- 设计模式-【原型模式】
- 设计模式-原型模式
- 设计模式-原型模式
- 设计模式-原型模式
- 设计模式-原型模式
- 设计模式- 原型模式
- 设计模式:原型模式
- 设计模式 - 原型模式
- 设计模式-原型模式
- 【设计模式】原型模式
- 设计模式-原型模式
- 设计模式-原型模式
- 【设计模式】原型模式
- 设计模式----原型模式
- 设计模式------原型模式
- Python批量操作文件,批量合并
- JS学习笔记
- 【转】杭电ACM试题分类
- Python中字符串切片操作
- 设计模式:简单工厂模式和工厂方法模式的区别
- 设计模式:原型模式
- 设计模式:模板方法模式
- 设计模式:观察者模式
- 设计模式:抽象工厂模式
- 设计模式:状态模式
- 设计模式:设计模式原则
- 设计模式:组合模式
- constant
- selenium+webdriver:不支持导出iframe的处理