原型设计

Java设计模式—原型模式

瘦欲@ 提交于 2020-03-07 22:17:31
原型设计模式是一种比较简单的设计模式,在项目中使用的场景非常多。 个人理解: 原型模式实现了对Java中某个对象的克隆功能,即该对象的类必须implements实现Cloneable接口来标识为可被克隆,然后需要覆写Object类的clone( )方法。 简单点说就是:实现一个接口重写一个方法就可以实现原型模式。 定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 通用类图如下所示: 原型模式的核心是一个clone方法,通过该方法进行对象的拷贝,Java提供了一个Cloneable接口来标示这个对象是可拷贝的,为什么说是“标示”呢?翻开JDK的帮助看看Cloneable是一个方法都没有的,这个接口只是一个标记作用,在JVM中具有这个标记的对象才有可能被拷贝。那怎么才能从“有可能被拷贝”转换为“可以被拷贝”呢?方法是覆盖clone()方法,是的,你没有看错是重写clone()方法。 通用源代码也相当简单如下: public class PrototypeClass implements Cloneable{ //覆写父类Object方法 @Override public PrototypeClass clone(){ PrototypeClass prototypeClass = null; try { prototypeClass =

JAVA设计模式之 原型模式【Prototype Pattern】

血红的双手。 提交于 2020-03-07 22:15:44
一、概述: 使用原型实例指定创建对象的种类,而且通过拷贝这些原型创建新的对象。 简单的说就是对象的拷贝生成新的对象(对象的克隆), 原型模式是一种 对象创建型模式 。 二、使用场景: 创建新的对象能够通过对已有对象进行复制来获得,假设是相似对象,则仅仅需对其成员变量稍作改动。 三、UML结构图: 四、參与者 (1) Prototype(抽象原型类):它是声明克隆方法的接口,是全部详细原型类的公共父类,能够是抽象类也能够是接口,甚至还能够是详细实现类。 (2) ConcretePrototype(详细原型类):它实如今抽象原型类中声明的克隆方法。在克隆方法中返回自己的一个克隆对象。 (3) Client(客户类):让一个原型对象克隆自身从而创建一个全新的对象。 五、用例学习: 1、抽象原型类:Prototype.java /** * 抽象原型类 * @author lvzb.software@qq.com * */ public abstract class Prototype { /** * 提供抽象克隆方法 */ public abstract Prototype clone(); } 2、详细原型类:ConcretePrototypeA.java /** * 详细原型类A * @author lvzb.software@qq.com * */ public class

Axure RP使用基础教程

巧了我就是萌 提交于 2020-03-05 01:20:59
一、Axure界面介绍 1、页面导航面板(Pages) Axure的页面管理采用类似操作系统的文件夹和页面文件的管理方式,不同点是,页面文件可以存在子页面,这一点是考虑了页面与页面跳转或者嵌套页面等网页特点。 页面文件管理导航面板 2、元件库(Libaries) Axure的元件库,类似与PPT的模板,或者是Office提供的各种形状、图标,可以通过拖拽的方式,帮助我们快速创建原型。 Axure的元件库导航 2.1元件库导入 Axure提供了多种元件库的导入功能,包含官网下载,本地导入、导入共享原件、手工创建等方式。其中手工创建可将我们日常用到较多的图形、样式、效果等管理成元件库,使用是,可直接拖拽到画布中,这里的原件不是简单的图形、形状、样式,还包含了网页所支持的特效,如渐进渐出、隐藏显示、幻灯片、链接跳转等 元件库管理 2.2 元件库使用 元件库提供了方便的导航筛选和元件名称搜索功能。 元件库筛选 元件库检索 拖拽使用元件 3.工具栏(ToolBar) 工具栏提供了常用按钮的快捷入口,既可以通过鼠标点击激活,也可以通过快捷键激活。 选择有两种模式,相交模式:鼠标按住拖动选择多个元素时,只要鼠标滑过的区域与元素有相交,该元素即被选中;包含模式:鼠标按住拖动选择多个元素时,只有鼠标滑过的区域完全覆盖了该元素,该元素才能被选中。 默认为相交模式,该模式类似与PPT中的选中模式。

图解Java设计模式之原型模式

一世执手 提交于 2020-03-04 07:52:03
图解Java设计模式之原型模式 克隆羊的问题 原型模式 - 基本介绍 原型模式在Spring框架中源码分析 浅拷贝的介绍 深拷贝基本介绍 克隆羊的问题 现在有一只羊tom,姓名为 : tom,年龄为 :1,颜色为 :白色,请编写程序创建和tom羊属性完全相同的10只羊。 传统方式解决克隆羊的问题 package com.example.demo.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

如何理解javascript中的对象

不羁的心 提交于 2020-03-03 16:17:48
以前对javascript中的对象总有不明白的地方,在本周也遇到了疑惑,于是借着机会去深入的了解了一下javascrpit中的对象。 创建对象 在javascript中,创建对象有两种方式,一种是使用 new 操作符后跟 Object 构造函数: let ob = new Object(); ob.name = 'object'; 另一种是直接使用对象字面值: let ob = { name: 'object' }; 这两种方式是等价的,虽然 Object 构造函数或对象字面量都可以用来创建单个对象,但这些方式有个明显的缺点:使用同 一个接口创建很多对象,会产生大量的重复代码。在面向对象的设计语言中,通常通过创建类来解决这一问题。 创建类 我们可以通过自定义构造函数来实现javascript中的类: function Student(name) { this.type = 'student'; this.name = name; this.sayName = function() { console.log(this.name); } } let student1 = new Student('zhangsan'); student1.sayName(); // zhangsan let student2 = new Student('lisi'); student2

23种设计模式之原型模式

拟墨画扇 提交于 2020-03-03 09:16:08
原型模式的定义 定义: 用原型实例指定创建对象的种类, 并且通过拷贝这些原型创建新的对象. 通俗的讲,就是不再使用new 来创建对象, 而改用 clone 方法来得到新的对象 原型模式的核心是一个 clone 方法, 通过该方法进行对象的拷贝, Java提供了一个Cloneable接口来标识这个对象是可拷贝的,为什么说是"标识" 呢? 翻开JDK的帮助看Cloneable是一个方法都没有的, 这个接口只是一个标记作用,在JVM中具有这个标记的对象才有可能被拷贝. 如何从"有可能被拷贝" 转换成"可以被拷贝"呢?方法是覆盖 clone 方法. 原型模式的通用代码: 原型模式的应用 原型模式的优点 性能优良. 原型模式是在内存二进制流的拷贝, 要比直接new 一个对象性能好很多, 特别是要在一个循环体内产生大量的对象时, 原型模式可以更好的体现其优点 逃避构造函数的约束. 这既是它的优点也是缺点, 直接在内存中拷贝, 构造函数是不会执行的. 优点是减少了约束, 缺点也是减少了约束, 需要在实际应用时考虑 原型模式的使用场景 资源优化场景. 类初始化需要消化非常多的资源, 这个资源包括数据、硬件资源等 性能和安全要求的场景. 通过new产生一个对象需要非常繁琐的数据准备或访问权限, 则可以使用原型模式 一个对象多个修改者的场景. 一个对象需要提供给其它对象访问,

不得不看的8大经典着陆页设计案例

那年仲夏 提交于 2020-03-03 00:35:55
着陆页设计的目的在于如何吸引用户、留住用户,提升转化率。许多网站的成功,关键体现在它们的着陆页设计。这些成功的案例无一例外都有一个共同点:它们拥有最棒的UI/UX设计师,拥有最吸引人的页面设计。 优秀的登录页所展现的内容不仅仅是华丽的页面视觉设计,更是提升用户体验,提升转化率的良好契机。优秀的设计师应该知道,一个正确的登陆页面设计应清楚地传达产品或服务的独特卖点(USP),并专注于一个行动号召(CTA),例如让访问者进行注册或购买。 优秀的着陆页设计仿佛自身就具有吸引用户的魔力,潜移默化的指引用户如何获取信息,完成注册和购买。那我如何设计出属于自己的优秀的着陆页面呢? 不妨先思考几个问题: 1. 网站的目标群体是谁? 是对你产品一无所知的新访客,还是对产品已经有所了解的用户?这两个想要看到的到达页内容相对也有所不同。 2. 设定转换目标。 你希望访问者是留下电子邮件,下载App,购买商品,注册会员或阅读更多文章? 3. 准确传递服务/产品信息。 不同来源和到达页的信息一定要清楚对等,千万不要挂羊头卖狗肉,否则只会让你的跳出率飙高。用户到达着陆页的目的是为了解决疑问,他们只想找到正确的答案! 4. 是否需要响应式网页设计(RWD)? 不多说,响应式设计是解决着陆页在手机、平板、电脑等不同设备显示友好性最好的办法。 5. 数据分析和A / B测试 没有绝对100%优秀的页面

结对第一次—疫情统计可视化(原型设计)

喜夏-厌秋 提交于 2020-03-01 16:12:59
结对第一次—疫情统计可视化(原型设计) 这个作业属于哪个课程 班级的链接 结对学号 221701320,221701329 这个作业要求在哪里 作业要求的链接 这个作业的目标 阅读《构建之法》第3章和第8章并体现阅读成果,对疫情可视化程序进行原型设计,描述遇到的困难及解决方法 作业正文 结对第一次—疫情统计可视化(原型设计) 其他参考文献 CSDN,博客园,Axure官网 一、可视化原型 1、原型设计工具 这次原型设计采用的工具是Axure rp9。 2、原型设计成果 这次设计主要是做两个省份的示例。 3、原型地址 原型设计地址 二、客户需求 1、Need 最近新冠肺炎疫情影响日渐扩大,民众需要一个能够记录反馈各个地区的疫情记录的软件。 2、Approach 疫情统计的后台由日志文件进行处理,将数据读取后,传输到前端进行绘制中国地图,用户在Web端进行操作,将相应的数据体现在地图上(包括数字、颜色等)。用户点击省份出现对应省份的详细数据以及数据分析。 3、Benefit 可以直观地反馈全国各个省份的疫情情况,反馈包括新增、累积感染、治愈、死亡数等数据以及疫情的变化趋势,能够让民众更方便了解疫情以及当前疫情的治理、传播情况。 4、 Competitors 网络上各种官方权威的平台都有做疫情情况的分析和统计,我们的软件也只拥有最基本的功能,没有任何优势 5、Delivery 通过微信

prototype pattern原型模式

两盒软妹~` 提交于 2020-02-28 07:27:10
定义 原型模式是一种非常简单的是模式,属于创建型设计模式的一种。原型模式(Prototype)即应用于“复制”操作的模式,此模式最初定义在《设计模式》(Addison-Wesley,1994),定义为: “ 使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象 ” 。简单来理解就是根据这个原型创建新的对象,这种创建是指深复制,得到一份新的内存资源,而不是一个新的指针引用。我们都知道,创建型模式一般是用来创建一个新的对象,然后我们使用这个对象完成一些对象的操作,我们通过原型模式可以快速的创建一个对象而不需要提供专门的new()操作就可以快速完成对象的创建,这无疑对于快速的创建一个新的对象是一种非常有效的方式。 结构 原型模式结构如下页上图所示: 客户(Client):使用原型对象的客户程序,客服端知道抽象的Prototype类 抽象原型(Prototype):规定了具体原型对象必须实现的接口(如果要提供深拷贝,则必须具有实现clone的规定) 具体原型(ConcretePrototype):从抽象原型派生而来,是客户程序使用的对象,即被复制的对象。此角色需要实现抽象原型角色所要求的接口。 Prototype类中包括一个Clone方法,Client知道Prototype,调用其复制方法clone即可得到多个实例,不需要手工去创建这些实例。

JavaScript设计模式样例七 —— 原型模式

限于喜欢 提交于 2020-02-27 15:10:36
原型模式(Prototype Pattern) 定义:用于创建重复的对象,同时又能保证性能。目的:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。场景:在运行期建立和删除原型。 let productPrototype = { init: (type) => { this.type = type }, getType: () => { return this.type } } let prototype = (type) => { function F () { } F.prototype = productPrototype let f = new F() f.init(type) return f } let car = prototype('丰田CHR') console.log(car.getType()) Git地址: https://github.com/skillnull/Design-Mode-Example 来源: https://www.cnblogs.com/Man-Dream-Necessary/p/12372165.html