精华内容
下载资源
问答
  • I . 原型模式 概念简介 II . 原型模式 使用场景 III . 原型模式 优缺点 IV . 原型模式 实现及 简单示例



    I . 原型模式 概念简介



    原型模式 : 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象


    ① 设计模式类型 : 创建型设计模式 ;

    ② 原型实例对象 : 给出原型实例对象 , 根据该对象创建新对象 ;

    ③ 创建对象类型 : 创建对象的种类由原型的实例对象类型确定 ;

    ④ 创建方式 : 不调用构造函数 , 而是通过克隆原型的实例对象 , 使用现有对象创建另一个相同类型的对象 , 隐藏创建细节 ;



    II . 原型模式 使用场景



    原型模式使用场景 : 原型模式的目的是 降低实例对象个数 , 减少构造函数的调用次数 ;


    ① 类初始化消耗资源过多 : 如果类初始化时消耗过多的资源 , 如这个类中某个成员占用大量内存 , 为了节省开销 ;

    ② 初始化繁琐耗时 : 类对象创建时经过大量的计算 , 或与本地资源 ( 数据库 , 文件 ) 频繁交互 , 每次创建消耗大量的 CPU 与 时间资源 ;

    ③ 构造函数复杂 : 类中定义的构造函数复杂 ;

    ④ 实例对象数量庞大 : 如果在内存中循环创建了很多该实例对象 , 就可以使用原型模式复用不用的对象 , 用于创建新对象 ;



    III . 原型模式 优缺点



    1 . 原型模式优点 : 性能高 , 简单 ;


    ① 性能高 : 使用原型模式复用的方式创建实例对象 , 比使用构造函数重新创建对象性能要高 ; ( 针对类实例对象开销大的情况 )

    ② 流程简单 : 原型模式可以简化创建的过程 , 可以直接修改现有的对象实例的值 , 达到复用的目的 ; ( 针对构造函数繁琐的情况 )


    2 . 原型模式缺点 : 实现复杂 , 坑多 ;


    ① 覆盖 clone 方法 ( 必须 ) : 必须重写对象的 clone 方法 , Java 中提供了 cloneable 标识该对象可以被拷贝 , 但是必须覆盖 Object 的 clone 方法才能被拷贝 ;

    ② 深拷贝 与 浅拷贝 风险 : 克隆对象时进行的一些修改 , 容易出错 ; 需要灵活运用深拷贝与浅拷贝操作 ;



    IV . 原型模式 实现及 简单示例



    1 . 原型模式实现 :


    ① 对象创建原理 : 创建实例对象时使用原型模式 , 就是调用类的 clone 方法 , 直接克隆拷贝现有的实例对象 , 生成新的对象 ;

    ② 实现 Cloneable 接口 : 原型模式类需要实现 Cloneable 接口 , 如下面的 Student 类 ( class Student implements Cloneable ) 就实现了该接口 ;

    ③ 重写 clone() 方法 : 通常情况下直接调用父类的 clone 方法即可 , 这种方式是浅拷贝 ,

    protected Object clone() throws CloneNotSupportedException{}
    

    2 . 原型模式类代码示例 :


    ① 代码实现 : Student 类实现 Cloneable 接口 , 重写了 clone() 方法 , 直接调用父类的 clone() 方法 ;

    ② 地址打印 : 注意 toString 中调用到了父类的打印方法 , super.toString() , 该方法打印 类名@地址 信息 , 可以帮助我们通过内存地址信息 , 看到是否真正的创建了一个新的实例对象 ;

    package kim.hsl.design.prototype;
    
    /**
     * 原型模式实现流程 : 使用 clone 方法实现原型模式
     * 1 . 类继承 Cloneable 接口
     * 2 . 实现 protected Object clone() 方法
     */
    public class Student implements Cloneable {
        private String name;
        private int age;
    
        public Student() {
            System.out.println("调用 Student 默认构造函数");
        }
    
        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;
        }
    
        @Override
        protected Object clone() throws CloneNotSupportedException {
            System.out.println("调用 Student clone 方法");
            return super.clone();
        }
        
        @Override
        public String toString() {
            return "Student{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    ", " + super.toString() +
                    '}';
        }
    }
    

    3 . 使用原型模式创建实例测试代码 :


    ① 创建一个原型对象 : 首先使用构造函数 , 创建一个原型对象 newStudent , 之后的对象都是根据该原型对象 clone 创建的 ;

    ② 使用原型模式创建对象 : 循环中 , 通过调用原型对象 newStudent 的 clone() 方法 , 创建一个新的对象 ;

    ③ 性能分析 : 使用 clone 方法创建对象 , 比直接使用 new 构造函数方法开销更小 , 性能更高 , 如果要创建大量该对象示例 , 建议使用原型模式 , 使用 clone() 方法大量创建该对象 ;

    package kim.hsl.design.prototype;
    
    public class Main {
    
        public static void main(String[] args) {
            try {
                //测试使用 clone 方法实现的原型模式 , 使用原型模式创建 10 个对象
                Student newStudent = new Student();
    
                /*
                    需求声明 : 此时要创建 10 个 Student 对象
                             依次调用一个创建好的 Student 对象的 clone 方法 10 次
                             即可创建 10 个不同的对象
                    适用场景 : 这是频繁创建大量的对象 , 该场景下适合使用原型模式
                 */
                for (int i = 0; i < 10; i++) {
                    // 1 . 使用 clone 方法创建对象
                    Student student = (Student) newStudent.clone();
                    // 2 . 设置克隆出的对象参数
                    student.setName("Tom" + i);
                    student.setAge(10 + i);
    
                    System.out.println(student);
                }
            } catch (CloneNotSupportedException e) {
                //捕获 clone 方法可能产生的异常
                e.printStackTrace();
            }
        }
    }
    

    4 . 执行结果 : 通过打印出的字符串序列分析 , 注意每个对象的地址 Student@1b6d3586 , Student@4554617c … , 10 个对象的地址都不相同 , 说明每个对象都是一个新的实例对象 ;

    调用 Student 默认构造函数
    Student clone 方法
    注册学生信息 : Student{name='Tom0', age=10, kim.hsl.design.prototype.Student@1b6d3586}
    Student clone 方法
    注册学生信息 : Student{name='Tom1', age=11, kim.hsl.design.prototype.Student@4554617c}
    Student clone 方法
    注册学生信息 : Student{name='Tom2', age=12, kim.hsl.design.prototype.Student@74a14482}
    Student clone 方法
    注册学生信息 : Student{name='Tom3', age=13, kim.hsl.design.prototype.Student@1540e19d}
    Student clone 方法
    注册学生信息 : Student{name='Tom4', age=14, kim.hsl.design.prototype.Student@677327b6}
    Student clone 方法
    注册学生信息 : Student{name='Tom5', age=15, kim.hsl.design.prototype.Student@14ae5a5}
    Student clone 方法
    注册学生信息 : Student{name='Tom6', age=16, kim.hsl.design.prototype.Student@7f31245a}
    Student clone 方法
    注册学生信息 : Student{name='Tom7', age=17, kim.hsl.design.prototype.Student@6d6f6e28}
    Student clone 方法
    注册学生信息 : Student{name='Tom8', age=18, kim.hsl.design.prototype.Student@135fbaa4}
    Student clone 方法
    注册学生信息 : Student{name='Tom9', age=19, kim.hsl.design.prototype.Student@45ee12a7}
    
    展开全文
  • 软件工程--快速原型模型详解

    千次阅读 2019-11-11 15:41:31
    快速原型模型 所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。 如下图所示(图中实线箭头表示开发过程,虚线箭头表示维护过程)。 快速原型模型的...

    快速原型模型

    所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。

    如下图所示(图中实线箭头表示开发过程,虚线箭头表示维护过程)。

    在这里插入图片描述

    快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌。通常,用户试用原型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用…一旦用户认为这个原型系统确实能做他们需要的工作,开发人员便可据此书写规格说明文档,根据这份文档开发出的软件便可以满足用户的真实需求。

    从上图中可以看出,快速原型模型是不带反馈环的,这正是这种过程模型的主要优点:软件产品的开发基本上做到线性顺序进行的。

    能基本上做到线性顺序开发的主要原因如下:

    • 原型系统已经通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户需求,因此,在开发过程的后续阶段不会因为发现了规格说明文档的错误而进行较大的返工。

    • 开发人员通过建立原型系统已经学到了许多东西(至少知道了“系统不应该做什么,以及怎样不去做不该做的事情”),因此,在设计和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性。

    软件产品一旦交付给用户使用之后,维护便开始了。根据所需完成的维护工作种类的不同,可能需要返回到需求分析、规格说明、设计或编码等不同阶段,如上图中虚线箭头所示。

    快速原型的本质是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。因此,原型系统的内部结构并不重要,必须迅速地构建原型然后根据用户意见迅速地修改原型。UNIX Shell 和 超文本都是广泛使用的快速原型语言,最近的趋势是,广泛地使用第四代语言(4GL)构件快速原型。

    当快速原型的某个部分是利用软件工具由计算机自动生成的时候,可以把这部分用到最终的软件产品中。例如,用户界面通常是由快速原型的一个关键部分,当使用屏幕生成程序和报表生成程序自动生成用户界面时,实际上可以把得到的用户界面用在最终的软件产品中。

    展开全文
  • 而在这个过程中,提出了许多不同的软件开发模型,典型的有:瀑布式,快速原型法,以及迭代式开发等。 瀑布式模型 是由W.W.Royce在1970年最初提出的软件开发模型,在瀑布模型中,开发被认为是按照需求分析,...

    自从1968年提出“软件工程”概念以来,软件开发领域对于借鉴传统工程的原则、方法,以提高质量、降低成本的探索就从未停止过。而在这个过程中,提出了许多不同的软件开发模型,典型的有:瀑布式,快速原型法,以及迭代式开发等。

    • 瀑布式模型

    是由W.W.Royce在1970年最初提出的软件开发模型,在瀑布模型中,开发被认为是按照需求分析,设计,实现,测试 (确认), 集成,和维护顺序的进行。

    • 快速原型法
      快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。
    • 迭代式开发

    在迭代式开发方法中,整个开发工作被组织为一系列的短小的、固定长度(如3周)的小项目,被称为一系列的迭代。每一次迭代都包括了需求分析、设计、实现与测试。采用这种方法,开发工作可以在需求被完整地确定之前启动,并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作。再通过客户的反馈来细化需求,并开始新一轮的迭代。

    不同的开发模型,对于设计阶段的工作要求也不尽相同。相对来说,瀑布式模型中对于设计文档的粒度要求得最细,而快速原型法对于设计的要求一般来说比较弱,迭代式开发在每一阶段中的设计文档工作量都相对较少,但在软件开发完成后,最终的设计文档完善程度要比快速原型法的好。

    软件设计的总体思路

    软件设计的本质就是针对软件的需求,建立模型,通过将模型映射为软件,来解决实际问题。因此软件设计需要解决的核心问题是建立合适的模型,使得能够开发出满足用户需求的软件产品,并具有以下特性:

    • 灵活性(Flexibility)
    • 有效性(Efficiency)
    • 可靠性(Reliability)
    • 可理解性(Understandability)
    • 维护性(Maintainability)
    • 重用性(Reuse-ability)
    • 适应性(Adaptability)
    • 可移植性(Portability)
    • 可追踪性(Traceability)
    • 互操作性(Interoperability)

    因此,软件设计并没有一套放之四海而皆准的方法和模板,需要我们的设计开发人员在软件的设计开发过程中针对软件项目的特点进行沟通和协调,整理出对软件项目团队的行之有效的方式,进行软件的设计。并保障软件设计文档的一致性,完整性和可理解性。

    谁来进行软件设计

    在我们开发人员中,有很多人这样理解:“软件设计文档就是软件架构师和设计人员的事情”,其实不然。设计文档是整个软件开发团队的产出,其中有些设计文档由架构师或者设计人员给出,有些文档由开发人员给出。这并没有一定的区分。

    最佳实践

    我们经常听到这样的话:

    • “设计文档没有用,是用来糊弄客户和管理层的文档”;
    • “用来写设计文档的时间,我的开发早就做完了”;
    • “项目紧张,没有时间做设计”;

    这些言论,并不是正确的观念,根据软件项目的实际情况,软件开发设计团队可以约定设计文档的详细程度。项目团队需要保障设计文档的完整性和一致性,在项目进度紧张的情况下,软件设计文档可以更初略一些;在项目时间充裕的情况下,相关文档可以更为详尽。但是在项目开发过程中,需要软件设计开发团队对于设计文档有共同的理解。

    设计文档分类与使用

    通常来说,作为软件项目,我们需要有这几类文档

    • 需求说明文档
    • 功能设计文档
    • 系统架构说明书
    • 模块概要设计文档
    • 模块详细设计文档

    就像我之前说到的,在某个软件团队,对于以上的文档的要求是可以完全不同的,在简单项目中,可能所有类型的文档放在一个文档中进行说明;在复杂项目中,每一类文档可能都要写几个文档;而在最极端的情况下,可能每一类文档都能装订成几册。因此,在我们软件设计和开发人员心目中需要明确的是:文档并不是我们进行设计的目标,也不是我们设计过程中额外的工作。

     软件设计文档是我们在软件设计开发过程中形成的,用来在软件设计开发团队内部以及与各干系人之间进行沟通的文档,这些文档记录了软件项目中的各种知识,方案的思路、以及各种决策意见

    下面我们就软件设计开发过程中必须要完成的工作进行梳理,而我们需要注意到,这些需要完成的工作,在不同的开发流程模型的指导下可能有不同的时间要求,而我们需要关注的是在这个阶段内需要完成的工作,以及这个阶段内我们需要沟通的人员。

    需求分析

    需求分析是我们进行任何一个软件项目设计开发过程中都必须要完成的工作。

    这个工作通常与客户一起完成。在不同的项目中,这个“客户”可能来自真正的购买产品的用户,使用系统的用户,也有可能来自团队的某个人员,如产品经理等。软件设计开发团队的参与成员根据项目的不同规模,则参与的人员也有所不同。原则上,设计开发人员参与的时间点越早,对于需求的理解和把握会更好。这个阶段,通常需要软件架构师参与其中。从资源优化的角度来说,开发人员不必参与需求分析,但需要理解需求。

    需求分析的结果通常我们需要使用需求说明文档来描述,目前主流的需求描述方法包括:用户例图、用户故事等方式。这些方式有所不同的侧重,其核心思想就是描述清楚用户的使用场景。但无论采取何种方式,进行需求的描述,需求说明需要明确以下几点:

    • 所需要开发的软件系统边界
    • 系统所有的相关及使用人员角色
    • 系统关键的使用场景
    • 系统规模、性能要求以及部署方式等非功能性需求

    功能设计

    功能设计与需求分析差不多同时在开展,在很多软件项目中,对于功能设计不是特别重视。但对于某些软件项目而言,这是一个相当重要的工作。对于主要是用户界面的软件项目来说,功能设计可以看作是画出原型界面,描述使用场景,获得用户认可的过程。而对于没有界面的软件项目来说,则功能设计与需求分析的区分更为模糊。

    参与的人员与需求分析的参与人员类似,架构师更侧重于参与此类工作,并给与一些实现层面的判断和取舍。

    功能设计需要明确的核心是:

    • 系统的行为

    系统架构设计

    系统架构设计是一个非常依赖于经验的设计过程。需要根据软件项目的特定功能需求和非功能性需求进行取舍,最终获得一个满足各方要求的系统架构。系统架构的不同,将很大程度上决定系统开发和维护是否能够较为容易的适应需求变化,以及适应业务规模扩张。

    架构设计工作中,用户参与程度很低。软件开发团队中的需求人员参与程度很低,但团队中的所有核心设计和开发人员都应该参与其中,并达成一致意见。

    架构设计的主要成果,是将系统的不同视图予以呈现,并使之落实到开发中:

    • 系统开发视图及技术路线选择
    • 系统逻辑视图
    • 系统部署视图
    • 系统模块视图
    • 系统的领域模型

    在软件开发过程中,系统的架构不是一成不变的,随着设计人员和开发人员对于系统的理解不断深入,系统的架构也会发生演化。在软件项目中,架构设计是开发团队沟通的统一语言,设计文档必须要随着系统的变化进行更新,保障开发团队对于系统的理解和沟通的一致性。

    模块/子系统概要设计

    模块/子系统的概要设计,由架构师参与,核心设计和开发人员负责的方式进行。
    在概要设计工作中,我们需要在架构确定的开发路线的指导下,完成模块功能实现的关键设计工作。在概要设计阶段,需要关注于模块的核心功能和难点进行设计。这个过程中更多推荐的采用UML来进行概要设计,需要进行:

    • 模块实现机制设计
    • 模块接口设计
    • 关键类设计
    • 画出时序图
    • 交互图等。

    模块详细设计

    在瀑布式开发模型中,模块的详细设计会要求比较严格,将所有类进行详细设计。据我所知,除了一些对于系统健壮性要求非常严格的软件项目,如国防项目,金融项目还要求有详细设计文档之外。其他的项目大多采用其他方式来处理这样的工作,如自动化测试等。

    综上所述,软件设计文档作为软件开发团队的沟通、理解、知识共享的手段,具有非常重要的意义。而根据软件团队的规模,对于文档上承载的信息详细程度可以有不同程度的要求。我们软件团队对于*如何使用设计文档有一个统一的理解,并坚持更新设计文档*,这就是软件设计的最佳实践!

    软件设计所需要的知识与技能

      • UML 统一建模语言
      • 软件工程
      • 面向对象的编程 OOP
      • 操作系统
      • 数据库原理
      • 设计模式
      • 沟通能力
    展开全文
  • 1. 原型概念 (1)为什么需要原型? 描述一个构造函数的时候,实际上是在描述对象需要什么成员 js是解释型语言,凡是需要解释的代码,都会被执行一次,意味着下面代码会创建多个对象var obj; for(var i=0...

    1. 原型的概念

    (1)为什么需要原型?
    描述一个构造函数的时候,实际上是在描述对象需要什么成员
    js是解释型语言,凡是需要解释的代码,都会被执行一次,意味着下面代码会创建多个对象
    var obj;
    for(var i=0; i<10; i++){
        obj = {};
    }

    再比如下面代码,永远不可能相等
    console.log([] == []); // false
    console.log({} == {}); // false
    console.log(function(){} == function(){}); // false

    对于引用类型,==和===都是比较内存地址

    那么构造函数
    function Person(name,age,gender){
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.sayHello = function() {};
    }
    
    var p1 = new Person('jim',19, '男');
    var p2 = new Person('jack',20, '男');
    在内存中会有两个sayHello副本,但逻辑一模一样,浪费资源

    需要将像方法这些可以共享的数据单独存储起来,让每个对象都可以在方法上得到共享。
    因此引入一个特殊的对象,以存储共享数据,然后每个对象都可以直接使用共享的数据。

    (2)什么是原型?
    原型只是一个很普通的对象,但它专门给一些对象存储共享的数据,所以给它取一个名字,叫原型。

    (3)原型的结构?
    ① 凡是写一个函数的时候,内部就会自动创建一个 对象,该对象使用  函数.prototype 来访问;
    ② 该对象只包含一个数据,即  constructor 属性,用于描述 该对象对应的函数
    ③ 该对象有一个使用特征:如果将函数作为构造函数来使用,创建出来的对象默认连接到该特殊对象中;(所谓连接到特殊对象,是指特殊对象中的成员,可以直接被该构造函数创建出来的对象所使用)
    这个特殊对象就是 原型(原来的/原始的形态/模型)。

    (4)补充一些概念(依照面向对象语言):
    概念词 作用 称为
    构造函数
    constructor
    用来描述对象应该具有什么成员使用 类 
    class
    属性 
    property
    用于表示对象的特征数据 字段 
    field
    方法 
    method
    用于描述对象的行为 函数 
    function
    构造函数创建的对象 称为该构造函数(该类)的实例,将这个过程称为实例化 实例
    instance
    由于这个特殊对象既可以与构造函数联系起来,又可以与实例对象联系起来,那么对于构造函数,这个特殊对象是使用 prototype 属性来引用的,将其称为 构造函数的原型属性,简称为原型;由于实例对象默认连接到这个特殊对象中,因此将这个特殊对象称为 实例对象的原型对象,简称为原型。

    2. 如何使用原型

    原型的使用就是在原型中提供方法,删除方法等。
    一般给原型增加的是方法,少有属性。
    // 给原型添加属性的例子
    function Person(){}
    Person.prototype.type = 'Person';
    var p = new Person();
    p.type; // 'Person'

    (1)直接利用对象的动态特性添加成员
    构造函数.prototype.XXX = xxx;

    (2)利用直接替换原型对象的方法
    构造函数.prototype = {
        constructor: 构造函数,
        XXX1: xxx1,
        XXX2: xxx2,
        XXX3: xxx3,
        ...
    }//原来的原型就被丢弃掉了
    在利用替换法使用原型的时候,容易出现的问题:实例在被创建的那一刻它的原型就被固定了。





    展开全文
  • 设计方法(原型法、敏捷开发)

    千次阅读 2017-03-13 15:18:58
    原型法和敏捷开发 原型法 定义:又称快速原型法,不属于敏捷开发。 根据需求用IDE实现基本功能,然后用户试用、补充和修改的重复过程,最后的版本再决定是demo还是正式版本。 分类 1. 抛弃型原型 - 此类原型在...
  • [转]快速原型法

    2014-03-17 10:46:00
    快速原型法(rapidprototyping)快速原型法是近年来提出的一种以计算机为基础的系统开发方法,它首先构造一个功能简单的原型系统,然后通过对原型系统逐步求精,不断扩充完善得到最终的软件系统。原型就是模型,而原型...
  • Java面试题内容聚合

    万次阅读 多人点赞 2019-07-31 11:45:18
    数据库面试常问的一些基本概念 Java中高级面试题(1) Java中高级面试题(2) Java中高级面试题(3) Java中高级面试题(4) Java中高级面试题(5) Java中高级面试题(6) spring面试题及答案...
  • 快速原型模型的概念,优缺点。

    千次阅读 2020-12-16 11:07:44
    快速原型模型需要迅速建造一个可以运行的软件原型 ,以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。 快速原型模型允许在需求分析阶段对软件的需求进行初步而非...
  • C语言

    万次阅读 多人点赞 2019-12-18 23:01:50
    char* 2个字节 int 4个字节 float 4个字节 double 8个字节 19.10进制转8进制,手算用 除8取余数得 20.十进制转十六进制为:除十六取余直到商为0,余数从后往前读。 21.%f代表单精度浮点型数据(float),%lf代表双...
  • 执行策划负责在实际工作中将整个游戏的具体玩进行落实,同时输出详细的策划书,很多游戏的细节和乐趣都是在执行策划这一步加入的。 文案策划负责设计将整个游戏的世界观、故事背景以及对话等,通过文本表现出来,...
  • 前端面试题

    万次阅读 多人点赞 2019-08-08 11:49:01
    已知有字符串foo=”get-element-by-id”,写一个function将其转化成驼峰表示”getElementById”。 56 var numberArray = [3,6,2,4,1,5]; (考察基础API) 57 输出今天的日期,以YYYY-MM-DD的方式,比如今天...
  • 项目之原型法

    2015-10-10 14:24:48
    和BOSS去出差,BOSS说,项目开始,很难知道对方真正想要什么,就算知道,也需要很长一段时间,用原型法,快速搭建做出一个原型Demo,制造点数据,有个东西,双方的交流就容易了。 回去后半小时BOSS用DEV搭建界面,...
  • (瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型)各种模型的概念特点优点缺点和不同。 (张海藩,吕云翔)著软件工程 复习记录 文章目录一、瀑布模型二、快速原型模型三、增量模型四、螺旋模型五、喷泉模型...
  • js面试题

    千次阅读 多人点赞 2019-04-09 19:42:32
    介绍 JavaScript 的原型原型链?有什么特点? 原型: JavaScript 的所有对象中都包含了一个 [proto] 内部属性,这个属性所对应的就是该对象的原型 JavaScript 的函数对象,除了原型 [proto] 之外,还预置...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    面向对象程序设计方法提出了一个全新的概念:类,它的主要思想是将数据(数据成员)及处理这些数据的相应方法(函数成员)封装到类中,类的实例则称为对象。这就是我们常说的封装性。 类的基本概念 类可以认为是对...
  • 数据结构(C++)有关练习题

    热门讨论 2008-01-02 11:27:18
    2、掌握并运用递归的概念进行编程; 内容及步骤: 1、 借助堆栈实现单链表上的逆置运算; 要求: a. 用C++编程; b. 首先用C++实现单链表编程,再基于编写好的单链表类,实现堆栈类的定义和实现。...
  • 快速原型法

    千次阅读 2002-04-09 09:41:00
    快速原型法 于海斌 薛劲松(本文转载自软件工程专家网www.21cmm.com) 快速原型法(rapid prototyping)快速原型法是近年来提出的一种以计算机为基础的系统开发方法,它首先构造一个功能简单的原型系统,然后通过对...
  • 原型法由于改变了系统的分析、设计和实现三个顺序阶段的观点,改变了传统的自顶向下的开发模式,降低了软件需求的风险,因此得到了广泛的应用,特别是在致力于某一领域MIS开发的软件公司,如致力于电力MIS开发的公司...
  • 计算机图形学导论

    千次阅读 多人点赞 2018-10-12 22:42:46
    计算机图形学概念 1.1什么是计算机图形学?(Computer Graphics) 关于计算机图形学的定义众说纷纭。 IEEE 对计算机图形学的定义为:Computer graphicsis the art or science of producing graphical images with...
  • 采用简化原型法进行需求分析

    千次阅读 2008-02-20 10:58:00
    常用的软件需求分析方法有面向数据流的结构化分析方法、面向数据结构的Jackson方法、面向对象的方法和原型法等。原型法由于改变了系统的分析、设计和实现三个顺序阶段的观点[2],改变了传统的自顶向下的开发模式,...
  • WPF开发教程

    万次阅读 多人点赞 2019-07-02 23:13:20
    要讨论 WPF 中的并发,首先必须真正理解两个核心概念 – 调度程序和线程关联。 在 WPF 的设计阶段,目标趋向于单一线程的执行,但这不是一种与线程“关联的”模型。当一个组件使用执行线程的标识来存储某种类型的...
  • 基于类似 JSON 的表示的 NoSQL 数据库的原型。 我有几个开始这样的项目的动机。 首先,我需要一个接口/框架,用于在平面文件中为我的项目读取和写入数据。 CSV 格式太简单了,因为我想为数据添加语义。 使用 ...
  • 2004-11-10 16:57:06 Wonder原型分为多少种? 2004-11-10 16:58:08 青润实用性原型、演示性原型,主要是这两类。在这上面还衍生出了一些其它的...没有见到过很详细的介绍原型法的资料。 2004-11-10 16:58:56 Wonder我需
  • 文章目录瀑布模型/改进的瀑布模型螺旋模型增量和迭代模型原型法快速和敏捷开发关于选择生命周期模型的最后的总结 瀑布模型/改进的瀑布模型 虽然瀑布模型仍然存在很多的问题有待解决,但瀑布模型仍然是最基本的和最效...
  • 无线传感器网络复习大纲

    千次阅读 多人点赞 2019-04-30 10:31:40
    无线传感器网络组成部分,概念、特点(了解) 分布式特点(了解) 实时性、时效性(了解) 常见拓扑结构(了解) WSN几个分层、分层的功能(了解) 自组织网络多跳传输特点(了解) 1、1无线传感器网络...
  • 原型法是在20世纪80年代中期为了快速开发系统而推出的一种开发模式,旨在改进传统的结构化生命周期法的不足,缩短开发周期,减少开发风险。原型法的理念是:在获取一组基本需求之后,快速地构造出一个能够反映用户...
  • 采用简化原型法进行需求分析

    千次阅读 2004-12-27 22:48:00
    常用的软件需求分析方法有面向数据流的结构化分析方法、面向数据结构的Jackson方法、面向对象的方法和原型法等。原型法由于改变了系统的分析、设计和实现三个顺序阶段的观点[2],改变了传统的自顶向下的开发模式,...
  • JS原型原型链是什么?

    万次阅读 多人点赞 2018-06-15 17:50:58
    概念,也没有"类"(class)和"实例"(instance)的区分,全靠一种很奇特的"原型链"(prototype chain)模式,来实现继承。 Brendan Eich设计javascript之初是为了实现网页与浏览器...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,558
精华内容 12,223
关键字:

原型法的概念