原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
原型模式结构图:
原型模式其实就是从一个对象再创建另外一个可制定的对象,而且不需要知道任何细节。
.NET在System的命名空间里提供了ICloneable接口,其中唯一的方法就是Clone(),这样我们只需要实现这个接口就可以完成原型模式了。
那么原型模式的优点在哪里呢,加入我们有很多对象,那么每new一次,我们都需要执行一次构造函数,如果构造函数的执行时间很长,那么多次执行这个初始化操作就太低效了,一般在初始化的信息不发生变化的情况下,克隆是最好的办法,既隐藏了对象创建的细节,又对性能有大大的提高。他等于不用重新初始化对象,而是动态的获得对象运行时的状态。
既然我们说到了克隆,就不得不提浅复制和深复制的问题。
浅复制就是被赋值的对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。
而深复制就是把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象。
关于深复制和浅复制的实现就需要你自己去查资料学习了。