博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原型模式
阅读量:6764 次
发布时间:2019-06-26

本文共 664 字,大约阅读时间需要 2 分钟。

只创建一个类实例对象,如果后面需要更多这样的实例,可以通过对原来对象拷贝一份来完成创建,这样在内存中不需要创建多个相同的类实例,从而减少内存的消耗和达到类实例的复用。

 

上面代码实现的浅拷贝的方式,浅拷贝是指当对象的字段值被拷贝时,字段引用的对象不会被拷贝。例如,如果一个对象有一个指向字符串的字段,并且我们对该对象做了一个浅拷贝,那么这两个对象将引用同一个字符串,而深拷贝是对对象实例中字段引用的对象也进行拷贝,如果一个对象有一个指向字符串的字段,并且我们对该对象进行了深拷贝的话,那么我们将创建一个对象和一个新的字符串,新的对象将引用新的字符串。也就是说,执行深拷贝创建的新对象和原来对象不会共享任何东西,改变一个对象对另外一个对象没有任何影响,而执行浅拷贝创建的新对象与原来对象共享成员,改变一个对象,另外一个对象的成员也会改变。

 

原型模式的优点有:

  1. 原型模式向客户隐藏了创建新实例的复杂性
  2. 原型模式允许动态增加或较少产品类。
  3. 原型模式简化了实例的创建结构,工厂方法模式需要有一个与产品类等级结构相同的等级结构,而原型模式不需要这样。
  4. 产品类不需要事先确定产品的等级结构,因为原型模式适用于任何的等级结构

原型模式的缺点有:

  1. 每个类必须配备一个克隆方法
  2.  配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定很容易,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候。

转载于:https://www.cnblogs.com/linfangpeng/p/6128910.html

你可能感兴趣的文章
由Cocos2dx的部分代码引出的对Lua元表的认识
查看>>
Spring Cloud构建微服务架构--服务网关
查看>>
hello oracle II
查看>>
vue2.0 仿手机新闻站(三)通过 vuex 进行状态管理
查看>>
AvalonJS前端开发源码
查看>>
oracle数据库查询通过一个待查询字段的值组装不同的条件
查看>>
关于数据库存放List
查看>>
3、继承与派生
查看>>
Wannafly summer camp Day2I(思维)
查看>>
正则表达式 小结
查看>>
docker基础
查看>>
MongoDB的安装与python操作MongoDB
查看>>
CF:The Fault in Our Cubes(DFS)
查看>>
[导入]WAP技术与网站建立
查看>>
STM32F4的sct文件理解
查看>>
6、消息发布和订阅功能
查看>>
P4233 射命丸文的笔记
查看>>
剑指offer-合并两个排序的链表
查看>>
SQLBulkCopy使用实例--读取Excel写入数据库/将 Excel 文件转成 DataTable
查看>>
企业分布式微服务云SpringCloud SpringBoot mybatis (五)路由网关(zuul)
查看>>