精华内容
下载资源
问答
  • 最佳运动类APP-Keep原型设计与欣赏

    千次阅读 2018-11-23 09:56:27
    尤其像我们这种设计师,每天的工作就是坐在电脑前产品定位分析、用户调研、业务需求分析、目标用户画像、用户需求分析、原型设计,交互设计文档等等。日常的运动更必不可少。当然,今天不是和大家说运动...

    运动类APP是大家手机中必备的一款软件。如果说谁手机里没有任何涉及运动类APP,那只能说真的与时代脱轨了。近些年随着物质生活条件的改善,人们开始越来越重视自己的身体,所以也越来越多的人会进行身体锻炼。

    尤其是像我们这种设计师,每天的工作就是坐在电脑前做产品定位分析、用户调研、业务需求分析、目标用户画像、用户需求分析、原型设计,交互设计文档等等。日常的运动更是必不可少。当然,今天不是来和大家说运动的重要性。接下来要做的是带领大家一起来分析和欣赏当今最佳一款运动类APP-Keep的设计,谁叫我这么热爱工作,每天沉迷于工作不能自拔呢,哈哈。希望对交互设计感兴趣的设计师朋友们有所用处。

     

    首先,和大家来简单介绍一下这款最佳运动类APP-Keep。Keep是一款具有社交属性的运动健身类产品。用户可以充分利用碎片化的时间,随时随地选择适合自己的健身课程进行真人同步训练。从2015 年 2 月上线至今,注册用户量已过1亿。在中国手机应用运动类APP指数排名第一(数据取自艾媒北极星)。那到底是什么样的设计造就了如此好的用户体验,从而吸引大量用户注册使用呢。接下来和大家一起一探究竟。

    1.产品定位

    基于健身教学视频的运动类APP,并融合社区、活动挑战、商城、饮食等功能模块,通过提供用户互动及运动装备购买,力求打造线上健身平台的闭环。

    2.用户分析

    ①性别占比

     

    根据艾媒北极星给出的统计数据来看,在使用用户中,男士比例为33.91%,女士比例为66.09%。

    ②年龄占比

     

    根据艾媒北极星给出的统计数据来看,用户年龄集中在30岁以下。

    3.特色功能介绍

    相比其他的运动类APP,在Keep中有一系列形式多样的健身计划、还通过推荐健身搭配饮食来满足用户的其他需求,让用户在健身过程中享受乐趣。

    真人同步训练,记录训练:以视频全程语音督导,自动同步进度。每次训练都会预留休息时间,不需要用户去想,只需跟着视频语音来锻炼,对于用户来说,具有很强的冲击力和趣味性。

    发布个人动态:分享健身成果,拍照记录每一天的变化,分享给好友相互鼓励,让健身不再孤独。

    徽章:通过训练可获得相应等级徽章并一键分享到不同渠道,让用户产生攀比心理,制造目标,促使用户去完成任务获得徽章。

    课程表:针对不同人群,制定不同锻炼任务,以日历的方式显示每天的任务,每次到锻炼时间会及时提醒。切实做到量体裁衣。

    4. 信息架构分析

    5. 原型设计分析及实现技巧

    提到原型设计,原型工具就必不可少了。有人说,我可以使用手绘啊,这个在此不多做评价,有兴

    趣的可以看看我之前的文章(纸上原型设计 VS 桌面原型工具设计,你更喜欢谁?)。当然,个人

    更推荐使用原型设计工具。目前市场上的原型设计工具琳琅满目,在这里,根据个人多年设计经

    验,推荐大家使用国产Mockplus做原型设计。其上手之快,操作之便捷,效率之高,也只有你身体

    力行后才能够体会了。

    废话不多说,先来尝鲜小编以Mockplus制作的运动类APP-Keep的原型。

    成品原型图:

     

    原型在线演示地址:

    https://run.mockplus.cn/tTUqShHAXPfczBUr/index.html

    原型微信扫码演示地址:

    原型设计解读及实现技巧:

    从界面中,我们可以看出,此APP中有4个底部导航菜单(运动、发现、社区、我)。在运动、社区这两个页面的布局均是通过点击标签组切换至不同页面。此外,在单独页面中,内容的布局很多都是一致的。这些在Mockplus中均有封装好的组件和图标,可快速设计出原型。

    ① 底部导航菜单栏设计

    使用“带文字图标”组件,直接在图标库中填充对应图标。布局好之后,直接将其添加至个人的组件库,其余页面直接复用。

    ②菜单内的页面切换

    直接使用标签组配合内容面板,轻松拖拽鼠标即可实现页面切换。(详情见:http://doc.mockplus.cn/?p=387

    ③页面内内容布局设计

    内容页的布局均是一样的,我们只需做好一个,然后直接将其转换为快速格子,快速实现重复布局。而里面的内容及图片,可直接使用自带的填充功能。(详情见:http://doc.mockplus.cn/?p=2811

    运动类APP在市场上还有很多,如小米运动,悦动圈,咕咚等。对交互设计感兴趣的朋友可以选择几款APP使用Mockplus做出交互原型。相信可以为你后期快速将产品构想变为可视界面奠定坚实基础,一起加油吧,设计圈的骚年们!

    展开全文
  • 如果有分身术,你会想干嘛?一个上班一个打游戏一个学习一个帮你家务。。。这种克隆的梦想都有...用原型实例指定要创建对象的种类,并通过拷贝这些原型的属性创建新的对象。通过拷贝自身的属性创建一个新对...

    如果有分身术,你会想干嘛?一个上班一个打游戏一个学习一个帮你做家务。。。这种克隆的梦想谁都有过。当然,现实生活中还不能完全实现这个梦想,但是程序可以啊!程序的克隆是简单的,因为它天生就具备方便复制的特点。在程序设计中,也有一种思想来源于克隆这一概念,就是克隆模式。

    究竟什么是克隆模式呢?

    用原型实例指定要创建对象的种类,并通过拷贝这些原型的属性来创建新的对象。通过拷贝自身的属性来创建一个新对象的过程叫作 克隆模式(Clone)。

    克隆模式的核心就是一个 clone 方法,clone 方法的功能就是拷贝父本的所有属性。主要包括两个过程:
    • 分配一块新的内存空间给新的对象。

    • 拷贝父本对象的所有属性。

    浅拷贝和深拷贝 浅拷贝:只拷贝引用类型对象的指针(指向),而不拷贝引用类型对象指向的值;深拷贝:可以同时拷贝引用类型对象及其指向的值。引用类型:对象本身可以修改,Python 中的引用类型有列表(List)、字典(Dictionary)、类对象。Python 在赋值的时候默认是浅拷贝。

    但通过克隆的方式创建对象时,浅拷贝往往是很危险的,因为如果这个类有引用类型的属性时,一个对象的改变会引起另一个对象也改变。而深拷贝就能对一个对象的属性进行完全拷贝,这样两个对象之间就不会相互影响了,你改你的,我改我的。

    在使用克隆模式时,除非一些特殊情况(如需求本身就要求两个对象一起改变),尽量使用深拷贝的方式(我们称其为 安全模式)。

    克隆模式的模型抽象代码框架

    克隆模式非常简单,我们可以对它进行进一步的重构和优化,抽象出克隆模式的框架模型。

    类图

    Clone 是克隆模式的基类,SubClassA 和 SubClassB 是具体的实现类。

    Python 中由于有 copy 模块的支持,因此克隆模式实现起来非常简单,只有两个方法:深拷贝克隆 deepClone 和浅拷贝克隆 clone,大部分情况下会用深拷贝的方式。

    477f7974257ec00de094bf3370c1e6ec.png

    克隆模式的设计要点 

    克隆模式也叫原型模式,应用场景非常广泛。在 Java 中与基类 Object 融为一体,可以随手就拿来用,只要 implements Cloneabble 接口就默认拥有了克隆的功能。而在 Python 中,克隆模式成为了语言本身的一部分,因为 Python 中对象的赋值就是一个浅拷贝的过程。但还是要区别浅拷贝和深拷贝,除非一些特殊情况,还是使用深拷贝为佳。

    克隆模式的优缺点 

    优点:
    • 克隆模式通过内存拷贝的方式进行复制,比 new 的方式创建对象性能更好。

    • 通过深拷贝的方式,可以方便地创建一个具有相同属性和行为的另一个对象,特别是对于复杂对象,方便性尤为突出。

    缺点:

    • 通过克隆的方式创建对象, 不会执行类的初始化函数(_init_)。这不一定是缺点,但大家使用的时候需要注意这一点。

    应用场景

    • 如果创建新对象(如复杂对象)成本较高,我们可以利用已有的对象进行复制来获得。

    • 类的初始化需要消耗非常多的资源时,如需要消耗很多的数据、硬件等资源。

    • 可配合备忘录模式做一些备份的工作。

    克隆模式暂时介绍到这里,想要了解更多上xue.cn可继续阅读。《人人都懂设计模式》中可以了解更多实际代码案例,让知识理解更透彻。现在可下载xue.cn app,利用碎片化时间就可以随时随地学习代码知识。

    展开全文
  • 在软件行业中,“设计”一词既熟悉又陌生,理论上大家都知道软件开发前需要做设计,但是具体要说明什么是设计设计包括的内容、方法、交付物、标准以及由谁来设计时,却又说不太清楚(除去一些大型软件企业外)。...

    在软件行业中,“设计”一词既熟悉又陌生,理论上大家都知道软件开发前需要做设计,但是具体要说明什么是设计、设计包括的内容、方法、交付物、标准以及由谁来设计时,却又说不太清楚(除去一些大型软件企业外)。多数的软件公司没有“设计师”的岗位,甚至都没有设置设计环节,特别是在中小型的软件公司,需求调研完成直接交给程序员是普遍现象。一般来说这样的软件公司的业务架构图、界面原型设计等工作都是由需求工程师来完成的。有鉴于此,这里简单地介绍一下需求工程师在从事“设计角色”时需要的能力。

    在这里插入图片描述
    图1 设计工作的位置

    设计工作的内容可以分为二大部分
    □非技术部分:包括了业务设计、应用设计两个部分(需求工程师要掌握,本文重点)
    □技术部分:技术设计(开发工程师要掌握,本文不涉及)

    第三篇介绍对需求工程师设计能力的要求

    怎么判断需求工程师是否做了“设计岗位”的工作呢?严格的说开发工程师(程序员)应该是按照设计规格书进行编码开发的。如果你所在的软件公司在需求工程师和开发工程师之间没有“设计师岗位”,那么开发工程师就一定是依据需求工程师编制的【需求规格说明书】进行编码开发的,此时就可以判断:需求工程师在调研分析需求的同时,也做了包括业务设计、应用设计等在内的设计工作(技术设计是由懂得技术的开发工程师完成的)。

    1. 设计目的

    设计工作的目的是将前面需求分析的结果,按照软件实现的要求细化为具体的架构图形、功能界面原型、数据关系图以及支持开发的说明文字等资料。
    所有的系统相关人(客户、咨询/需求、程序员、测试、实施等)通过这个设计资料,在软件开发完成前就可以准确地了解未来的系统,如根据这个设计资料可以知道:
    □系统具有什么功能、运行方式、给客户工作带来的变化效果等。
    □系统实现的技术路线、实现方案、测试用例等
    □所需编码资源、进度计划、交付内容等。
    设计工作是搞清楚怎么做什么系统的过程。

    2. 设计作用

    1) 设计工作的作用

    设计工作的作用可以分为几个方面来来理解。

    (1)业务设计
    决定了产品的“可用性”,业务设计正确说明系统可用。业务设计是参照客户的实际工作,确定具体的业务逻辑、数据逻辑、业务功能等,比如报销模块的设计内容:报销流程(业务逻辑)、报销数据来源(数据逻辑)、报销操作界面(业务功能)。设计结果的正确与否直接关系到这个系统是否可用,因此业务设计正确是系统建设的基础。

    (2)应用设计
    决定了产品的“易用性”,应用设计正确说明系统好用。应用设计重点关注的是系统设计是否人性化、是否给客户带来工作效率的提升,比如:将系统从“人找事”设计成为“事找人”,这样的设计为客户带来工作环境的优化,大幅度提升工作效率,减少人为的工作失误,让系统自动地为用户提供服务。

    (3)客户价值
    软件的客户价值主要来源于业务设计和应用设计的成果,前者决定了业务价值的高低(系统带来的业务优化、改善、效益的提升)、后者决定了应用价值(系统带来的工作方式变化、工作效率的提升),特别是应用设计的结果极大地影响客户对系统的满意度。

    (4)降低风险
    设计工作做得越细致、具体,通过反复的“设计推演”,就可以避免开发完成后的返工,这是设计工作的一个非常重要的目的。
    顺便说一句,由于软件行业普遍存在着对“设计工作”的重视不足,软件完成后大量的、频繁的返工是常见现象,其重要原因之一就是缺乏设计(或缺乏优秀的设计),开发前谁都不知道完成后的系统是什么样的(缺乏业务验证、应用验证),完成后一试用客户就会提出很多要修改的要求,系统不得不修改,甚至要推翻重来。

    2) 需求工程师的作用

    在没有设计师岗位的软件公司,需求工程师事实上是充当了“设计师”的角色。不论在哪个行业、也不论制作什么产品,设计师都是产品成功与否的关键角色,设计师的水平直接关系到了产品的水平、最终决定了产品的价值。在设计方面需求工程师的作用归纳如下(不限于此):
    □在前面咨询和调研角色将需要的素材和要求全部收集并确认完成,下面要由设计角色参照要求将需求素材与软件技术要求相结合,给出未来系统的设计图(设计资料)。
    □设计工作是决定产品的关键,需求工程师要判断设计的正确性、可行性、合理性等。
    □设计角色在系统开发过程中具有决定权,包括系统样式、规格、标准(业务和应用两方面),技术设计师和程序员原则上是不可以在未经许可的情况下改动设计。
    □严格地讲,程序员不是按照需求,而是按照设计资料进行编码开发的;同理,测试工程师也是基于设计资料编写用例和测试的。
    □将客户提出的需求,按照软件的要求进行,使得需求可以转换为软件系统的功能。
    ■可以说,需求工程师的工作成果是软件开发内容、客户满意度、软件价值的关键。

    注:关于设计与架构的异同
    “设计”是个大概念,设计包含了“架构”,架构工作属于设计全过程中的初期阶段,架构的主要内容是进行“规划、概要”等粗粒度的设计,其重点在对系统进行整体的规划、制定系统的设计理念、框架、主线、原则、标准等。一般谈到设计时,不但包括系统的整体架构,也包括详细设计(小到一个“字段”在界面上的摆放位置)。因此“设计师”的工作范围更加宽泛,而“架构师”的工作一般特指设计阶段的前期工作。

    3. 设计能力

    搞清楚了设计的目的和作用后,下面就要谈谈在这个阶段对需求工程师的能力要求。对需求工程师的设计能力要求与他和后面技术工程师之间的交付内容相关。作为设计角色,需求工程师要能够精准地给出业务和应用两个方面对系统的功能要求、标准。下面主要从两个方面谈一下:必备能力、专业知识。

    1)必备能力

    针对“设计师”的岗位,对需求工程师能力要求相对较高,他要掌握的能力比较综合,不是简单的看、听、说的单一能力等,而是思维能力和动手能力相结合的综合能力,这里举几项做个参考(不限于此):

    (1)规划能力
    具有站在客户领导视角观察和理解问题的能力,可以从整体上理解客户需求(经营、管理和执行三层提出的需求),要能够同时考虑到:新系统与其它既有系统在空间上的关系、新系统今天的内容与明天的扩展在时间上的关系。

    (2)建模能力
    要能够从系统的视角对需求进行分析、抽提、找出规律,然后建立最简洁的业务处理模型。模型建立的好,则系统的架构合理、复用性强、容易实现、且对需求的应变能力也强。

    (3)画图能力
    毫无疑问,设计交付成果的重要形式就是图形(业务架构图、数据关系图、界面原型图等),看一眼图形基本上就可以判断出来设计者的水平,所以对需求工程师来说:用图形的方式能够正确地表达多少设计成果是非常重要的能力判断标准。

    (4)逻辑能力
    对于软件工程一阶段中的所有角色(咨询、调研和设计)来说,逻辑能力都是必不可少的,而且对于设计岗位的逻辑能力不但要体现在思维层面,更重要的是要将思维的结果用正确的图形表达出来,图形中的逻辑要清晰。

    2)专业知识

    需求工程师作为“设计师”的角色,在设计阶段需要的专业知识主要是指软件设计方面。包括:
    (1)概要设计知识:根据前期的【需求规格说明书】对系统进行顶层设计,包括整体规划、设计理念、业务主线、技术路线、原则以及相应的规则和标准等内容。
    (2)详细设计知识(业务):根据【概要设计规格书】,对架构层、功能层和数据层的内容进行业务方面的细节设计,如业务建模、业务原型确定、字段定义、字典/看板/表单等的设计。
    (3)详细设计知识(应用):根据【概要设计规格书】,对架构层、功能层和数据层的内容进行应用方面的细节设计,如系统原型、流程机制、登录、门户、权限、以及系统易用性相关的设计。
    (4)详细设计知识(技术):不在对需求工程师能力的要求范围内(省略)。
    (5)用例设计知识:前面设计的是否合理、正确、并满足客户需求呢?这里就需要进行用例设计,包括业务用例(检验业务设计部分的内容)、应用用例(检验应用设计部分的内容)。
    (6)技术实现知识:对需求工程师虽不要求会编码,但是最好也能够掌握一定的系统构成、系统开发、系统测试等相关常识(越多越好),有了这方面的知识更容易判断客户需求与软件实现之间的合理性。
    ■能力,来源于将学习到的知识在实践中进行反复的应用、总结、积累。

    4. 设计成果

    设计成果包括了以上全部的设计资料
    (1)概要设计规格书。
    (2)详细设计(业务)的规格书、业务用例。
    (3)应用设计(应用)的规格书、应用用例。

    ■设计小结

    相比较于咨询和调研的工作内容来说,设计工作要求的难度可能比较大,需要的知识也比较多,但是在小规模的软件企业或是小型的软件项目中大都没有特定的设计师,因此需求工程师具有一定的设计能力就尤为重要。

    ■需求工程师的能力总结

    至此关于需求工程师的能力要求就介绍完了,从上述的介绍中可以看出来,完美的系统开发除去需要大量优秀的程序员外,同样还需要很多优秀的需求工程师,没有需求工程师正确地完成上述工作(咨询、调研、设计),程序员的技术水平再高也无法得到优秀的产品。这两者的协同合作是完成系统的必要条件,不存在哪个为主哪个为辅为判断。
    从图1上可以看出、需求工程师的前面是咨询师的岗位、后面是设计师的岗位,不论向哪个方向努力,都会有一个更高的岗位在等待着需求工程师。需求工程师的调研能力是咨询能力和设计能力的基础要求。
    如果你在一个小型的软件公司、或是一个小项目里做事,那么上述所说的“咨询师、需求工程师、软件设计师”三者所需要的能力都要具备。
    你从事的是其中哪个角色?是否打算成为一个全能的角色呢?

    ■关于软件设计,请参看李鸿君的“如何绘制逻辑图”、“界面设计方法”等系列博文。

    本系列到此结束。关于详细的设计方法介绍,请参考《大话软件工程—需求分析与软件设计》一书。

    在这里插入图片描述

    展开全文
  • JavaScript与设计模式

    2020-06-23 19:01:12
    js没有传统语言中的类式继承,通过原型委托方式实现对象间的继承 面向对象三大特性:抽象、继承、多态 1.1 动态语言和鸭子类型 ...what:将“什么”和“以及怎么去”分离开 why:..
    • js没有传统语言中的类式继承,通过原型委托方式实现对象间的继承

    • 面向对象三大特性:抽象、继承、多态

    1.1 动态语言和鸭子类型

    • 静态类型语言在编译时便已确定变量的类型,而动态类型语言的变量类型要到程序运行的时候,待变量被赋予某个值之后,才会具有某种类型。

    鸭子类型

    “如果它走起路来像鸭子,叫起来也是鸭子,那么它就是鸭子。”

    1. 只关注对象行为,不关注对象本身。

    2. 故动态语言不必借助超类型帮助,实现面向接口编程

    1.2 多态

    what:将“做什么”和“谁去做以及怎么去做”分离开

    why:给予了我们扩展程序的能力,程序看起来是可生长的,也符合开放-封闭原则。

    How:即将不变的事物和可能改变的分离开。

    example 1:使动物叫

    在例子中,不变的部分是动物都会发出叫的动作,会变的是,动物的叫声不同。故程序可以分为两个部分。

    function makeSound(animal){  
     animal.sound && animal.sound()  
    }  
    ​  
    // 改变的部分  
    var Duck = function (){}  
    Duck.prototype.sound = function (){  
     console.log('gagaga')  
    }  
    var Dog = function(){}  
    Dog.prototype.sound = function(){  
     console.log('wangwangwang')  
    }
    

    // 不变的部分

    上文谈到的多态实质上指的是对象的多态性。

    Martin Fowler 在《重构:改善既有代码的设计》里写到:

    多态的最根本好处在于,你不必再向对象询问“你是什么类型”而后根据得到的答案调用对象的某个行为——你只管调用该行为就是了,其他的一切多态机制都会为你安排妥当。

    1. JavaScript 的变量类型在运行期是可变的。一个 JavaScript 对象,既可以表示 Duck 类型的对象,又可以表示 Chicken 类型的对象,这意味着 JavaScript 对象的多态性是与生俱来的。

    2. 多态最根本的作用就是通过把过程化的条件分支语句转化为对象的多态性,从而消除这些条件分支语句。

    example 2:调用地图Api

    在本例子,会改变的是Api提供商,不变的是进行地图渲染的动作

    //使用不同地图api进行渲染  
    ​  
    //不变的是渲染行为  
    var render = function(map){  
     if(map.show instanceof Function){  
     map.show()  
     }  
    }  
    //变的是 api提供者  
    var gooleMap = {  
     show:function(){  
     console.log('gooleMap进行渲染')  
     }  
    }  
    ​  
    var baiduMap={  
     show:function(){  
     console.log('baiduMap进行渲染')  
     }  
    }
    

    设计模型与多态

    • 绝大部分设计模式的实现都离不开多态性的思想

    • 在JavaScript中函数是一等对象,

    1.3 封装

    封装的目的是将信息隐藏。一般而言,我们讨论的封装是封装数据和封装实现。这一节将讨论更广义的封装,不仅包括封装数据和封装实现,还包括封装类型和封装变化。

    1.3.1 封装数据

    • 许多对象系统中,封装数据由语法解析实现,例如private、public等

    • js依靠变量的作用域实现封装特性,且只能模拟public和private

    可使用let和函数来创建作用域

    1.3.2 封装实现

    从封装实现细节来讲,封装使得对象内部的变化对其他对象而言是透明的,也就是不可见的。

    1.3.3 封装类型

    封装类型是静态类型语言中一种重要的封装方式。一般而言,封装类型是通过抽象类和接口来进行的。把对象的真正类型隐藏在抽象类或者接口之后

    在Javascript中,没有对抽象类和接口的支持,也没有能力进行类型封装。

    1.3.4 封装变化

    《设计模式》一书曾提到如下文字:

    “考虑你的设计中哪些地方可能变化,这种方式与关注会导致重新设计的原因相反。它不是考虑什么时候会迫使你的设计改变,而是考虑你怎样才能够在不重新设计的情况下进行改变。这里的关键在于封装发生变化的概念,这是许多设计模式的主题。”

    设计模式划分为创建型模式、结构性模式、行为型模式

    1. 创建型模式: 创建对象是一种抽象行为,即创建什么对象是可以变化的。即封装创建对象的变化

    2. 结构性模式: 封装对象间的组合关系

    3. 行为型模式:封装对象的行为变化

    在系统演变中,只需替换可变的部分,因为已经封装好,故替换起来相对容易。最大程度地保证程序地稳定性和可扩展性

    展开全文
  • 都会画线框图。当我(英文原文作者)的朋友们谈到自己的产品idea时,我会鼓励他们拿起纸和笔,通过草图交流想法...他们知道草图和线框原型只是整个设计流程当中的一小部分,它们调研工作的结论产出,用来沟通的
  • 发出一个动作,不同的对象有不同的反应,‘什么’和‘’ 3.封装数据。 JS只能通过依赖变量的作用域实现封装特征。 5.JS中的原型继承: (1)所有的数据都对象,除了undefined,其他的都对象,所以n
  • C#23种设计模式

    2013-06-02 16:49:43
    (100块钱一份,你要不要) 原始模型模式:通过给出一个原型对象指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类,产品类不需要非得有...
  • 这篇文章将专注于解读 redux 核心的设计思路,以 <a href="https://github.com/Lucifier129/Isomorphism-react-todomvc">Isomorphism-react-todomvc</a> 这个项目为示例。它很可能目前实现最完备的 react/...
  • 原始模型模式: 原始模型模式 通过给出一个原型对象指明所要创建的对象的类型,然后用复制这个原 型对象的方法创建出更多同类型的对象。 原始模型模式允许动态的增加或减少产品类, 产品 类不需要非得有任何事先...
  • 有的人可能叫“组件”或“部件”,这不重要,关键看如何设计,如何一个全方位的考量,这本文的重点阐述的概念。我想大家对 “jQuery插件的方式”有一定的了解,我们结合这个话题一起讨论一下,最终给出相关的...
  • 软件工程教程

    2012-07-06 23:10:29
    “软件投入生产性运行以后需要的维护工作并不多,而且维护一件很容易的简单工作” 软件危机的解决 解决途径 组织管理 工程项目管理方法 技术措施 软件开发技术与方法 软件工具 软件工程概念 软件工程的概念 ...
  • asp.net知识库

    2015-06-18 08:45:45
    是谁?[C#] 表达式计算引擎 正式发布表达式计算引擎WfcExp V0.9(附源码) 运算表达式类的原理及其实现 #实现的18位身份证格式验证算法 身份证15To18 的算法(C#) 一组 正则表达式 静态构造函数 忽略大小写Replace...
  • 本书的作者小傅哥,投入50天时间,从互联网实际业务开发中抽离出,交易、营销、秒杀、中间件、源码等22个真实场景,学习设计模式实践使用的应用可上手技能。 发明了设计模式? 设计模式的概念最早由 克里斯...
  • 我们看看 underscore 怎么的。 <pre><code> javascript function collectNonEnumProps(obj, keys) { var nonEnumIdx = nonEnumerableProps.length; var constructor = obj.constructor; // proto ...
  • 设计模式一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。 使用设计模式为了重用代码、让代码更容易被他人理解、保证代码可靠性。 基于以下的面向对象设计原则。 - 对接口编程而不是对...
  • 在Js里正则表达式用RegExp类型支持的,关于正则可以看看之前写的一篇文章,用python描述的如何读懂正则。 <p>Js也支持三种模式,gim,表示全局,不区分大小写,多行。 ...
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    3.14 如果我不使用表达式的值,那我应该用i++还是++i来做自增呢? 3.15 我要检查一个数是不是在另外两个数之间,为什么if(abc)不行? 3.16 为什么如下的代码不对?inta=1000,b=1000;longintc=a*b; 3.17 为...
  • php高级开发教程说明

    2008-11-27 11:39:22
    当从事一个专业项目的时候,考虑一下你正在什么至关重要的,“了解你的敌人,永远 不要低估它”。尽管你的项目并不是一个真正的敌人,这句话的寓意仍然适用,在转向其他题目 时,要知道项目的所有技术条件、目标...
  • 上篇基本上第一版的修订,只是了一个调整,那便在兼顾 Windows和Linux两方面用户的基础上,默认在Linux下建立开发环境编写我们的操作系统。至于这样的原因,在本书第 2章有比较详细的说明。当然,开发环境...
  • 上篇基本上第一版的修订,只是了一个调整,那便在兼顾 Windows和Linux两方面用户的基础上,默认在Linux下建立开发环境编写我们的操作系统。至于这样的原因,在本书第 2章有比较详细的说明。当然,开发环境...
  • 3.14 如果我不使用表达式的值,那我应该用i++还是++i来做自增呢? 68 3.15 我要检查一个数是不是在另外两个数之间,为什么if(a )不行? 69 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 69...
  • 3.14 如果我不使用表达式的值,那我应该用i++还是++i来做自增呢? 68 3.15 我要检查一个数是不是在另外两个数之间,为什么if(a )不行? 69 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 69...
  • 3.14 如果我不使用表达式的值,那我应该用i++还是++i来做自增呢?  3.15 我要检查一个数是不是在另外两个数之间,为什么if(abc)不行?  3.16 为什么如下的代码不对?inta=1000,b=1000;longintc=a*b;  3.17 为...
  •  3.14 如果我不使用表达式的值,那我应该用i++还是++i来做自增呢? 3.15 我要检查一个数是不是在另外两个数之间,为什么if(abc)不行? 3.16 为什么如下的代码不对?inta=1000,b=1000;longintc=a*b; 3.17 为...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    3.14 如果我不使用表达式的值,那我应该用i++还是++i来做自增呢? 39 3.15 我要检查一个数是不是在另外两个数之间,为什么if(a b c)不行? 40 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * ...
  • 3.14 如果我不使用表达式的值,那我应该用i++还是++i来做自增呢? 39 3.15 我要检查一个数是不是在另外两个数之间,为什么if(a b c)不行? 40 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * ...

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

原型设计是谁来做