原型设计

原型模式 - OK

左心房为你撑大大i 提交于 2020-01-14 00:50:17
  原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。   简单说来原型模式就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。   原型模式UML图:        原型模式的基本代码结构: namespace ConsoleApplication1 { abstract class Prototype { private string id; public Prototype(string id) { this.id = id; } public string Id { get { return id; } } public abstract Prototype Clone(); //抽象类的关键就是要有这样一个克隆方法 } //具体原型类 class ConcretePrototype1 : Prototype { public ConcretePrototype1(string id): base(id) { } public override Prototype Clone() { return (Prototype)this.MemberwiseClone(); //创建当前对象的浅表副本。方法是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。 //如果字段是值类型,则对该字段执行逐位复制

简说设计模式——原型模式

为君一笑 提交于 2020-01-14 00:49:52
一、什么是原型模式   还记不记得初高中学生物的时候,细胞分裂时怎么实现的,一个细胞无论是细胞核分裂还是细胞质分裂,是不是都是通过克隆自身实现的。或者说我们去复印资料的时候,是不是直接对原本的资料进行复印,得到了一个一模一样的资料,这些都可以说是原型模式,下面看一下定义。 原型模式(Prototype) ,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。UML结构图如下: 其中,Prototype为原型类,声明一个克隆自身的接口;ConcretePrototype为具体实现类,实现一个克隆自身的操作;而客户端Client只需让一个原型克隆自身,从而创建一个新的对象。 1. Prototype 1 public abstract class Prototype implements Cloneable { 2 3 private String id; 4 5 public Prototype(String id) { 6 this.id = id; 7 } 8 9 public String getId() { 10 return id; 11 } 12 13 @Override 14 public Prototype clone() { 15 Prototype prototype = null; 16 17 try { 18 prototype =

简历复印—原型模式

我的未来我决定 提交于 2020-01-14 00:48:16
《大话设计模式》书中描述 原型(Prototype)模式 :   原型模式(Prototype) : 用用原型实例指定创建对象的种类 , 并且通过拷贝这些原型创建新的对象 。 原型模式(Prototype Pattern)结构图 这种形式涉及到三个角色: 客户(Client)角色:客户类提出创建对象的请求。 抽象原型(Prototype)角色:这是一个抽象角色,通常由Java接口或Java抽象类实现。此角色给出所有的具体原型类所需的接口。 具体原型(Concrete Prototype)角色:被复制的对象。此角色需要实现抽象的原型角色所要求的接口。 源代码:    抽象原型角色 public interface Prototype{ /* 克隆自身的方法 @return 一个从自身克隆出来的对象 */ public Object clone(); }   具体原型角色 public class ConcretePrototype1 implements Prototype { public Prototype clone(){ //最简单的克隆,新建一个自身对象,由于没有属性就不再复制值了 Prototype prototype = new ConcretePrototype1(); return prototype; } } public class

原始(Prototype)模式

喜你入骨 提交于 2020-01-14 00:48:07
  原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型对象创建新的对象。   原型模式其实就是从一个对象创建另外一个可复制的对象,而且不需要知道任何创建的细节。 (最常用的就是基于流的深复制) 原始模型模式   Java语言本身支持原始原型模式。所有的JavaBean都继承自Java.lang.Object,而Object类提供一个clone方法,可以将一个JavaBean对象复制一份。但是这个JavaBean必须实现一个表示接口Cloneable,表明这个JavaBean支持复制。如果一个对象没有实现这个接口而调用clone()方法,Java编译器会抛出CloneNotSupportedException异常。 变量、对象以及对象的引用   对象就是类的实例。一般情况下,一个类被实例化时,此类的所有成员,包括变量和方法,都被复制到属于此数据类型的一个新的实例中取。比如: User user = new User(); 上面的语句做了如下的事情: (1)创建了一个User类型的变量,称为user (2)建立了一个User类的对象 (3)使变量user指到这个对象上。 可以将上面分成下面两步: User user; user = new User();   第一行建立了一个变量叫做user,可以指到User类对象上。但在上面第一行结束时并没有指到它上面

设计模式——原型模式(Prototype)

 ̄綄美尐妖づ 提交于 2020-01-14 00:47:05
用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。——DP UML类图 模式说明 如果把在一张纸上手写一篇简历的过程看成是类的实例化过程,那么通过原型模式创建对象的过程就是拿着这张纸到复印机上复印的过程。即原型模式中的一个对象可以自我克隆生成另一个对象,而无需再次通过类的初始化过程。由于克隆操作比较常见,.NET已经提供了 ICloneable 接口(包含唯一一个方法Clone),所以在.NET中,只要实现这个接口,就算实现原型模式了。 下面的示例中,定义了两个类,一个简历类和一个地址类,并且两个类都实现ICloneable接口。 /// <summary> /// 在.Net中提供了ICloneable接口,无需再定义一个父类 /// </summary> class Resume : ICloneable { public string Name { get; set; } public int Age { get; set; } public Address Addr { get; set; } public string Remark { get; set; } public Resume(string name) { Addr = new Address(); this.Name = name; } // 原型模式 public object Clone()

原型设计工具Axure注册码、Axure RP 8.1企业版 注册码、Axure RP 8.1 Pro 汉化包教程

走远了吗. 提交于 2020-01-14 00:21:00
首先,下载Axure RP8.1 Pro软件,下载地址: https://www.axure.com.cn/3510/ 下载和安装步骤是非常非常普通的操作。 完成安装成功后,我们先下载一个汉化包,下载地址: http://www.chanpinban.com/downloads/ 下载图中红色框内的汉化包,然后解压该包,里面有一个lang的文件夹。 先关闭Axure软件,然后将lang文件夹复制拷贝到Axure安装路径中。 重新打开软件,这个时候就汉化成功。如下图: 最后一步是管理授权,也就是输入注册码,这里我提供了很多个注册码,亲测有效。如下: Axure RP 8.1 Pro 注册码 Axure RP 8.1企业版 注册码 Pro edition: license: axure key: c6KAQPAzmVqyrMcsTFuBFIdVUZNaFkSrYd0ukzE/3Fx753igDgFxyedcaUDGAQNR 8g1CKB8JtRwkE55dAaihHZwzFoAQz3qEcgvbniCjkY1JwDN0XObV5Lp4ekQT3L05 ovfF97mrOzgX3GIk20U3sDCTmGFbxnEhhBYbubH/bQX3V2BJJloJSVdUJOJ0mB/k h4pdS6pcg8KkSHfSinrdtWeQl+2Glqpwsw

JavaScript 秘密花园 http://bonsaiden.github.com/JavaScript-Garden/zh/

五迷三道 提交于 2020-01-12 20:22:25
简介 JavaScript 秘密花园 是一个不断更新,主要关心 JavaScript 一些古怪用法的文档。 对于如何避免常见的错误,难以发现的问题,以及性能问题和不好的实践给出建议, 初学者可以籍此深入了解 JavaScript 的语言特性。 JavaScript 秘密花园 不是 用来教你 JavaScript。为了更好的理解这篇文章的内容, 你需要事先学习 JavaScript 的基础知识。在 Mozilla 开发者网络中有一系列非常棒的 JavaScript 学习 向导 。 译者注: 文中提到的 ES5 是 ECMAScript 5 的简写,是 ECMAScript 标准语言的下一版本,正在开发中。 JavaScript 是此标准语言的一个方言。 关于作者 这篇文章的作者是两位 Stack Overflow 用户, 伊沃·韦特泽尔 Ivo Wetzel (写作) 和 张易江 Zhang Yi Jiang (设计)。 贡献者 Caio Romão (拼写检查) Andreas Blixt (语言修正) 中文翻译 三生石上 此中文翻译由 三生石上 独立完成, 博客园 首发,转载请注明出处。 许可 JavaScript 秘密花园在 MIT license 许可协议下发布,并存放在 GitHub 开源社区。 如果你发现错误或者打字错误,请 新建一个任务单 或者发一个抓取请求。

【设计模式】原型模式

瘦欲@ 提交于 2020-01-12 17:13:27
原型模式 原型模式 ,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 说白点就是,使用原型模式可以很便捷的创建一个原型出来,之后再拷贝它,并可以对拷贝出来的东西进行修改。 原型模式原本的意思是, 先构造原型,再拷贝(也就是不用构造),从而说原型模式提高了效率。 但写完代码后发现,如果要实现深拷贝,也就是所有的指针、引用的部分都需要使用new才能完成。new也就是构造对象,当然这个构造对象只是构造整个对象里的指针、引用部分,所以我认为效率的提高程度依赖于类里引用类型的数目。 讲真的,或许这个模式并不适合C++,因为C++里面有个拷贝构造,可以直接拷贝。并且再Java和C#语言中都用对应的类似于ICloneable接口。 注:我也不知道这个模式使用的频率多不多,如果使用Java或C#,我觉得我可能需要重新学习一下,但原理再上述讲清了。 来源: https://www.cnblogs.com/LampsAsarum/p/12183093.html

设计模式@第7章:原型模式

浪尽此生 提交于 2020-01-10 22:49:58
第7章:原型模式 克隆羊问题 现在有一只羊 tom,姓名为: tom, 年龄为:1,颜色为:白色,请编写程序创建和 tom 羊 属性完全相同的 10 只羊。 二、传统方式解决克隆羊问题 思路分析(图解) 看老师代码的演示 首先是 Sheep 实体类 package com.gjxaiou.prototype; public class Sheep { private String name; private int age; private String color; public Sheep(String name, int age, String color) { super(); this.name = name; this.age = age; this.color = color; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getColor() { return color; } public void setColor

社团项目个人总结

ぃ、小莉子 提交于 2020-01-10 07:45:49
最终项目Github链接 : https://github.com/hkymygithub/ClubManage 需求文档链接 : https://www.cnblogs.com/lfxy/p/11788767.html 墨刀原型链接 : https://org.modao.cc/app/h6gzy6cu814k3vcgyib28wafa4fuxe UML设计链接 (附带第一次会议总结): https://www.cnblogs.com/lfxy/p/11885545.html 需求文档链接 : https://www.cnblogs.com/lfxy/p/11973849.html 一、个人定位 在这次项目中,我的定位类似于产品经理 承包设计师与美工的部分,做出ui的平面设计与素材收集及制作 确认接口,衔接设计与程序还有需求 确认软件需求,设计软件ui平面设计,设计软件使用流程 后期帮助其他组员编写页面 为写好的功能的页面进行排版 二、个人分工   (一) 素材收集及制作及文档编写     一个app需要足够的图标,logo,以及图库,而我负责这些素材的准备      1) Logo,加载页面,登陆界面图片的制作           2) 图标的收集、与整理            3) 图片的收集、与整理            4) 素材制作及收集阶段总结     我总觉得