原型设计

原型模式(原型设计模式)详解

隐身守侯 提交于 2019-12-16 00:52:33
在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样简单。 原型模式的定义与特点 原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较耗时,如果复制就快了很多。在生活中复制的例子非常多,这里不一一列举了。 原型模式的结构与实现 由于 Java 提供了对象的 clone() 方法,所以用 Java 实现原型模式很简单。 1. 模式的结构 原型模式包含以下主要角色。 抽象原型类:规定了具体原型对象必须实现的接口。 具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。 访问类:使用具体原型类中的 clone() 方法来复制新的对象。 其结构图如图 1 所示。 图1 原型模式的结构图 2. 模式的实现 原型模式的克隆分为浅克隆和深克隆,Java 中的 Object 类提供了浅克隆的 clone() 方法,具体原型类只要实现 Cloneable 接口就可实现对象的浅克隆,这里的 Cloneable 接口就是抽象原型类。其代码如下: /

[02]Go设计模式:原型模式(Prototype )

故事扮演 提交于 2019-12-14 09:35:57
目录 原型模式 一、简介 二、代码实现 三、参考资料: 原型模式 一、简介 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。可能每个对象有大量相同的数据,这个时候我们就可以缓存该对象,在下一个请求时返回它的克隆,仅需要更信部分不同的数据,需要的时候更新数据入库,以此来减少数据库交互。 二、代码实现 先定义一个原型复制的接口 type Cloneable interface { Clone() Cloneable } 实现Clone函数 type Person struct { name string age int height int } func (p *Person) Clone() Cloneable { person := *p return &person } func(p *Person) SetName(name string) { p.Name = name } func(p *Person) SetAge(age int) { p.Age = age } 来看完整代码实现 package main

13.原型模式(原型设计模式)详解

无人久伴 提交于 2019-12-14 00:11:03
在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样简单。 原型模式的定义与特点 原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较耗时,如果复制就快了很多。在生活中复制的例子非常多,这里不一一列举了。 原型模式的结构与实现 由于 Java 提供了对象的 clone() 方法,所以用 Java 实现原型模式很简单。 1. 模式的结构 原型模式包含以下主要角色。 抽象原型类:规定了具体原型对象必须实现的接口。 具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。 访问类:使用具体原型类中的 clone() 方法来复制新的对象。 其结构图如图 1 所示。 图1 原型模式的结构图 2. 模式的实现 原型模式的克隆分为浅克隆和深克隆,Java 中的 Object 类提供了浅克隆的 clone() 方法,具体原型类只要实现 Cloneable 接口就可实现对象的浅克隆,这里的 Cloneable 接口就是抽象原型类。其代码如下: /

java设计模式--2.原型模式

為{幸葍}努か 提交于 2019-12-13 11:59:56
原型模式的定义与特点 原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较耗时,如果复制就快了很多。在生活中复制的例子非常多,这里不一一列举了。 原型模式的结构与实现 由于 Java 提供了对象的 clone() 方法,所以用 Java 实现原型模式很简单。 1. 模式的结构 原型模式包含以下主要角色。 抽象原型类:规定了具体原型对象必须实现的接口。 具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。 访问类:使用具体原型类中的 clone() 方法来复制新的对象。 其结构图如图 1 所示。 图1 原型模式的结构图 2. 模式的实现 原型模式的克隆分为浅克隆和深克隆,Java 中的 Object 类提供了浅克隆的 clone() 方法,具体原型类只要实现 Cloneable 接口就可实现对象的浅克隆,这里的 Cloneable 接口就是抽象原型类。其代码如下: //具体原型类 class Realizetype implements Cloneable { Realizetype() { System.out.println("具体原型创建成功!")

Axure 盗版使用被终结,我们该怎么办

自古美人都是妖i 提交于 2019-12-11 16:34:54
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 根据Axure中文官网网站发布的紧急通知:“现在(10月18日)通过官方下载地址的最新版本是3312,只有通过开发版下载链接才能下载到最新的3318版本。相信官方很快就要推送新的3318版本的升级通知了。”并且网络流传的授权码都无法验证通过,这无疑是给没有购买正版的童鞋的一大重创,当然,购买正版的朋友无需担心,跟你们屁点关系也没有,该升级的升级。“建议企业用户购买正版软件保证工作的顺利进行。个人用户除了购买正版Axure软件,也可以暂时维持当前版本不做升级,当然这也是以失去软件的稳定性为代价。学生或教师用户还可以去官网申请免费的教育版。” 使用过Axure的童鞋都知道这是一款很强大的工具,功能全面,做原型溜的不要不要的,但就是繁琐。不论是线上还是线下,Axure的培训班都如“雨后春笋”一样地冒出来,为了学习Axure,很多人投了大把的钱去报培训班,效果那就不可而知了。没有了盗版的Axure可用,国内的用户该何去何从?高价购买正版的Axure,这似乎是唯一的选择。跳出Axure的限制难道就没有别的工具可选择了吗?如果有一款更快,更简单的,而且没有任何语言障碍的国产原型工具,你们会怎么选择呢?不知大家对于国内这款- Mockplus了解多少,据说是国内做的最好的原型工具。 Mockplus

第12组 Beta冲刺(4/5)

ぐ巨炮叔叔 提交于 2019-12-10 18:40:09
PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 20 20 Estimate 估计这个任务需要多少时间 20 20 Development 开发 1055 1720 Analysis 需求分析 (包括学习新技术) 100 250 Design Spec 生成设计文档 60 100 Design Review 设计复审 20 20 Coding Standard 代码规范 (为目前的开发制定合适的规范) 125 150 Design 具体设计 240 360 Coding 具体编码 240 360 Code Review 代码复审 120 180 Test 测试(自我测试,修改代码,提交修改) 150 300 Reporting 报告 60 90 Test Repor 测试报告 20 30 Size Measurement 计算工作量 15 20 Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 25 40 合计 1135 1830 学习进度条 第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 累积学习耗时(小时) 重要成长 1 0 0 5 5 熟悉Axure RP用法 2 0 0 5 10 了解原型设计方法 3

产品需求文档的写作(三) – 原型设计(手绘原型,灰模原型,交互原型)

大兔子大兔子 提交于 2019-12-10 11:02:15
上一篇文章 我们通过 思维导图 将想法进行了结构化梳理,接下来我们就需要进行方案的可行性推演,验证产品功能是否可行,预估项目要花多少人力物力,因此我们就要通过 原型设计 进行相关需求的论证。一开始就撰写 PRD文档 ,我们很难对产品进行各方面的评估,也无法得知方案的可行性,并且无法直观细致的考虑产品。 原型设计 是帮助我们更细致的思考,并做各项需求的评估,同时也是将自己脑海里的想法进行输出,通过原型设计后,我们就可以进行产品宣讲了。相对于之前抽象的文字描述,原型则更加清晰产品的需求,设计和技术人员或者老板也能够更加直观的了解到产品意图。 原型设计是将结构化的需求进行框架化,因此原型也被称为 线框图 ,具体的表现手法有很多种,相关的辅助软件也有很多,例如: Axure RP 、 Balsamiq Mockups 、 UIDesigner 等等。 当到了原型设计这一步时,已经不仅仅是构思了,我们需要更加深入的了解每个页面上的元素和这些元素的属性。例如按钮元素,我们就需要考虑这个按钮的功能,并且这个功能操作后带给后端和前端的反馈。举例这个按钮是注册会员按钮,用户操作后,第一步逻辑是验证用户输入的信息是否合法,不合法则给出前端反馈;合法则和后端通信验证是否已经存在同样信息,已经存在则给出前端反馈,不存在则进入下一步,注册成功;注册成功后的反馈是跳转页面,还是弹出层提示用户完善资料

关于产品经理对Axure的应用

我们两清 提交于 2019-12-10 10:54:05
注意:本系列文章内容,均为作者结合自身经验,给出的建议性方案,作为实际应用的参考!如有不严谨或错误之处,敬请指出,不胜感激! Axure不等于产品经理,它只是一个能够辅助产品经理工作的工具; Axure不等于交互设计,Axure能够帮助我们直观呈现产品需求,便于沟通; Axure不等于低保真原型,它也能够在产品论证阶段,通过交互模拟实现对功能模块的可用性测试以及用户体验测试。 Axure不等于高保真原型,Axure在产品经理手中应该有各种不同的应用; Axure并不像大多数人想象中的样子。 从这一篇开始,我将结合一个虚拟出来的APP产品,对Axure的具体应用,给大家做详细的展示。 让大家能够知道,在产品经理的工作中,Axure的主要应用和不可忽视的作用。 不过,既然是一个APP产品,我们总要先有这个产品的结构信息,才能够在此基础上进行原型以及其他重要图表的绘制。 下面这张图就是使用Xmind整理出来的一个产品信息结构图。(因为是一个虚拟出来的产品,仅作为后面内容的基础,所以并没有过多的考虑功能是否完整,请勿在这方面过于追究。) 我将结合这张图,逐渐的深入,结合各种姿势、技巧,来满足大家的需求。 特别说明:这张图是思维导图软件Xmind中的逻辑图(向右),用这样的图表来呈现产品信息结构,结构上比较清晰,也比较适合用户从左至右、从上至下的阅读习惯。 当我们完成这样的一张图表之后

23种设计模式(5):原型模式

帅比萌擦擦* 提交于 2019-12-10 05:02:38
定义: 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 类型: 创建类模式 类图: 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件: 实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。在java虚拟机中,只有实现了这个接口的类才可以被拷贝,否则在运行时会抛出CloneNotSupportedException异常。 重写Object类中的clone方法。Java中,所有类的父类都是Object类,Object类中有一个clone方法,作用是返回对象的一个拷贝,但是其作用域protected类型的,一般的类无法调用,因此,Prototype类需要将clone方法的作用域修改为public类型。 原型模式是一种比较简单的模式,也非常容易理解,实现一个接口,重写一个方法即完成了原型模式。在实际应用中,原型模式很少单独出现。经常与其他模式混用,他的原型类Prototype也常用抽象类来替代。 实现代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 class Prototype

Prototype(原型)设计模式之析

穿精又带淫゛_ 提交于 2019-12-10 04:38:06
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。 它主要面对的问题是:“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。 带Prototype Manager的原型模式: 客户(Client)角色:客户端类向原型管理器提出创建对象的请求。 [1] 抽象原型(Prototype)角色:这是一个抽象角色,通常由一个C#接口或抽象类实现。此角色给出所有的具体原型类所需的接口。在C#中,抽象原型角色通常实现了ICloneable接口。 具体原型(Concrete Prototype)角色:被复制的对象。此角色需要实现抽象的原型角色所要求的接口。 原型管理器(Prototype Manager)角色:创建具体原型类的对象,并记录每一个被创建的对象。 #include "stdafx.h" #include<iostream> #include<vector> #include<assert.h> usingnamespace std; //父类 class