详解-原型模式-业务应用场景

1. 简介

说到这个原型模式,之前也是做了相关深入理解,搜索原型模式的应用场景却发现得到的结果大都概念性的东西,没有实质的业务应用场景,本人也想一探究竟

其定义如下:
原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。

需要注意的是通过克隆方法所创建的对象是全新的对象,它们在内存中拥有新的地址,通常对克隆所产生的对象进行修改对原型对象不会造成任何影响,每一个克隆对象都是相互独立的。通过不同的方式修改可以得到一系列相似但不完全相同的对象。

上边就是原型模式的概念,说直白一点就是对象的复制,还有一重要特性就是,原型模式可以方便快速的保存大对象的运行时状态.

2. 原型模式的应用场景举例

2.1. 大同小异的工作周报

某软件公司一直使用自行开发的一套OA (Office Automatic,办公自动化)系统进行日常工作办理,但在使用过程中,越来越多的人对工作周报的创建和编写模块产生了抱怨。追其原因,该软件公司的OA管理员发现,由于某些岗位每周工作存在重复性,工作周报内容都大同小异,如图7-1工作周报示意图。这些周报只有一些小地方存在差异,但是现行系统每周默认创建的周报都是空白报表,用户只能通过重新输入或不断复制粘贴来填写重复的周报内容,极大降低了工作效率,浪费宝贵的时间。
在这里插入图片描述
那么如何快速创建相同或者相似的工作周报 ?

解决办法:
(1)除了允许用户创建新周报外,还允许用户将创建好的周报保存为模板
(2)用户在再次创建周报时,可以创建全新的周报,还可以选择合适的模板复制生成一份相同的周报,然后对新生成的周报根据实际情况进行修改,产生新的周报。

通常我们会使用两个电脑基本操作:复制和粘贴,快捷键通常为Ctrl + C和Ctrl + V,通过对已有对象的复制和粘贴,我们可以创建大量的相同对象。如何在一个面向对象系统中实现对象的复制和粘贴呢?原型模式就解决了该问题,通过对象深克隆(对模板的复制),然后在新的对象上稍作修改,再保存为一个新的周报。

2.2 辅助实现撤销操作

可以使用深克隆的方式保存对象的状态,使用原型模式将对象复制一份并将其状态保存起来,以便在需要的时候使用(如恢复到某一历史状态),可辅助实现撤销操作。即常见的上一步 / 下一步,等的操作.

3. UML

在这里插入图片描述

4. 主要优点与应用

(1) 当创建新的对象实例较为复杂时,创建新对象成本较大时,使用原型模式可以简化对象的创建过程,通过复制一个已有实例可以提高新实例的创建效率。如果是相似对象,则可以对其成员变量稍作修改。(也算是一个技术层面的主要应用场景)
(2) 原型模式提供了简化的创建结构,工厂方法模式常常需要有一个与产品类等级结构相同的工厂等级结构,而原型模式就不需要这样,原型模式中产品的复制是通过封装在原型类中的克隆方法实现的,无须专门的工厂类来创建产品。
(3) 可以使用深克隆的方式保存对象的状态,使用原型模式将对象复制一份并将其状态保存起来,以便在需要的时候使用(如恢复到某一历史状态),可辅助实现撤销操作。
(4) 如果系统要保存对象的状态,而对象的状态变化很小,或者对象本身占用内存较少时,可以使用原型模式配合备忘录模式来实现。

5. 弊端

(1) 需要为每一个类配备一个克隆方法,而且该克隆方法位于一个类的内部,当对已有的类进行改造时,需要修改源代码,违背了“开闭原则”。
(2) 在实现深克隆时需要编写较为复杂的代码,而且当对象之间存在多重的嵌套引用时,为了实现深克隆,每一层对象对应的类都必须支持深克隆,实现起来可能会比较麻烦。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中铁五局经营信息系统网站 一、网站建设构想与目的 随着国家投资规模的增大,全集团公司各单位在不同行业和地区的各种工程信息越来越多,而通过往常的电话、传真等信息上报手段已经远远不能满足信息的处理要求,经营信息系统网站建立的构想是基于当前全集团公司经营信息渠道不畅、信息滞后以及全集团公司的资源不能共享等问题出现后提出的。 网站建立的目的就是让信息上报渠道畅通,信息的发布及时,各单位经营人员都能共享全集团公司的资源。 二、网站的服务对象 服务对象为:集团公司分管经营的领导、经营开发中心领导、经营开发中心主要业务部门、各子、分公司经营领导与业务部门、集团公司各窗口单位。 三、网站的管理结构 网站分主系统与子系统,集团公司经营开发中心信息科为经营系统网站主系统的建立与管理者,各单位(主要指有施工能力的子分公司)的经营部门为子系统的建立与管理者。子系统的管理员在得到主系统管理员授权后对本单位的子系统进行管理,一般来说是各单位的经营部长。 子系统只收集本单位的资料,管理员可以授权本单位的相关领导查阅本单位的资料。主系统收集全集团公司的资料,相关人员在得到管理员的授权后查阅相关权限内的资料。 主系统拥有全集团公司的全部资料,各子系统相当于主系统的备份。并且从安全角度上来看,一方面是集团公司的资料的一个备份,另一方面,集团公司授权用户越少将越安全,同时一旦出现安全问题只是各自公司的一部分资料,不可能同时集团公司的资料出现同样的安全问题。 四、网站的访问方式 网站数据库存放在本单位的服务器内,具体的访问方式待协商 五、网站的安全管理与备份 安全管理采用后台管理与前台管理分开,系统管理员进行后台管理,具体方式待协商。 安全备份冗余系统的建立待协商。 六、网站数据库的建设方式 拟采用JAVA语言编程,微软服务器SQL数据库,具体建设方式待协商。 上传系统的各个上传项目均采用网页表单模式录入信息,以方便数据化,减少二次处理,有利于数据查询及保存。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值