首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
我们的动机(Our motivation)
】的更多相关文章
面向对象设计模式纵横谈:Abstract Factory 抽象工厂模式(笔记记录)
今天是设计模式的第二讲,抽象工厂的设计模式,我们还是延续老办法,一步一步的.演变的来讲,先来看看一个对象创建的问题. 1.如何创建一个对象 常规的对象创建方法: 这样的创建对象没有任何问题,也可以很好的使用.但是如果有需求的变化,比如,如果我们换了一种道路呢,这时候就出现了问题. new的问题: -实现依赖,不能应对"具体实例化类型"的变化,Road是具体类型,所有使用到Road的地方都需要变化.如果经常变化,怎么解决具体类型的变化呢? 解决思路: -封装变化点--哪里变化,…
面向对象设计模式纵横谈:Singelton单件模式(笔记记录)
李建忠老师讲的<面向对象设计模式纵横谈>,早就看过了,现在有了时间重新整理一下,以前的博客[赛迪网]没有了,现在搬到博客园,重新过一遍,也便于以后浏览. 设计模式从不同的角度分类会得到不同的结果.设计模式可以从[目的]和[范围]两个角度来看看. 模式分类 从目的来看[这个分来是广泛使用的]: -创建型(Creational)模式:负责对象的创建 -结构型(Structural)模式:处理类与对象间的组合关系 -行为型(Behavioral)模式:类与对象交互中的职责分配的问题 从范围来看…
C#面向对象设计模式纵横谈——6.Prototype 原型模式(创建型模式)
动机(Motivation) 在软件系统中,经常面临着“某些结构复杂的对象”的创建工作.由于需求的变化,这些对象经常面临着剧烈的变化,但他们却拥有比较稳定一致的接口. 如何应对这种变化?如何向“客户程序(使用这些对象的)”隔离出“这些易变对象”,从而使得“依赖这些易变对象的客户程序”不随着需求的改变而改变. 意图(Intent) 使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象. ----<设计模式> GOF 结构(Structure)…
C#面向对象设计模式纵横谈——5.Factory Method 工厂方法模式(创建型模式)
动机 (Motivation) 在软件系统中,经常面临着“某个对象”的创建工作; 由于需求的变化,这个对象经常面临着剧烈的变化,但是它却拥有比较稳定的接口. 如何应对这种变化?如何提供一种“封装机制”来隔离出“这个易变对象”的变化,从而保持系统中“其他依赖该对象的对象”不随着需求改变而改变 ? 意图 (Intent) 定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method 使得一个类的实例化延迟到子类. ———<设计模式> GOF 结构(Structure)…
C#面向对象设计模式纵横谈——4.Builder 生成器模式(创建型模式)
动机 (Motivation) 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是它们组合在一起的算法却相对稳定. 如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统的“稳定构建算法”不随着需求改变而变化 ? 意图(Intent) 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示. ------<设计模式> GoF 结构 …
C#面向对象设计模式纵横谈——3.Abstract Factory 抽象工厂(创建型模式)
动机(Motivation) 在软件系统中经常面临着“一系列相互依赖的对象”的创建工作,同时,由于需求变化,往往存在更多系列对象的创建工作.如何应对这种变化?如何绕过常规对象的创建,提供一种“封装机制”来避免客户程序和这种“多系列具体对象的创建工作”的紧耦合? 意图(Intent) 提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类. ---<设计模式> GoF 结构 (Structure)…
C#面向对象设计模式纵横谈——2.Singleton 单件(创建型模式)
一:模式分类 从目的来看: 创建型(Creational)模式:负责对象创建. 结构型(Structural)模式:处理类与对象间的组合. 行为型(Behavioral)模式:类与对象交互中的职责分配. 从范围来看: 类模式处理类与子类的静态关系. 对象模式处理对象间的动态关系. 二:Singleton (创建型模式) 单件 1.动机(Motivation) 软件系统中,经常有这样一些特殊的类,必须保证他们在系统中只存在一个实例,才能确保它们的逻辑正确性,以及良好的效率. 如何绕过常规的构造器,…
Topology and Geometry in OpenCascade-Adapters
Topology and Geometry in OpenCascade-Adapters eryar@163.com 摘要Abstract:本文简要介绍了适配器模式(adapter pattern),并结合程序实例对OpenCascade中的拓朴与几何的适配器的使用进行说明. 关键字Key Words:OpenCascade.BRep.Topology.Geometry.Adapter 一.适配器模式简介 Introduction of Adapter pattern 类对象结构型模式适配器模…
设计模式学习之路——Decorator装饰模式(结构模式)
子类复子类,子类何其多 假如我们需要为游戏中开发一种坦克,除了各种不同型号的坦克外,我们还希望在不同场合中为其增加以下一种或多种功能:比如红外线夜视功能,比如水陆两栖功能,比如卫星定位功能等等. 动机(Motivation) 上述描述的问题根源在于我们"过度地使用了继承来扩展对象的功能",由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性:并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀(多继承).如何使"对象功能的扩展&quo…
Prototype原型(创建型模式)
依赖关系的倒置:抽象不应该依赖于实现的细节,实现细节应该依赖于抽象. 原型模式的定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.prototype模式允许一个对象再创建另外一个可定制对的对象,根本无需知道任何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝他们自己来实施创建. 动机(Motivation) 在软件系统中,经常面临着“某些结构复杂的对象”的创建工作:由于需求的变化,这些对象经常面临着剧烈的变化,但他们…
设计模式——抽象工厂(Abstract Factory)
Abstract Factory 抽象工厂模式(创建型模式): new的问题:实现依赖,不能应变应对“具体实例化类型”的变化. 解决思路:--封装变化点:哪里变化,封装哪里 - -潜台词:如果没有变化,当然不需要额外的封装 工厂模式的缘起 变化点在“对象创建”,因此就封装“对象创建” 面向接口的编程——依赖接口,而非依赖实现 简单工厂的问题 --不能应对“不同系列对象”的变化.比如有不同风格的游戏场景——对应不同风格的道路,房屋,地道.... ——如何解决:使用面向对…
抽象工厂模式(Abstract Factory Pattern)
动机(Motivation) 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作:同时,由于需求的变化,往往存在更多系列对象的创建工作.如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合? 意图(Intent) 提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类. Abstract Factory模式的几个要点 (1) 如果没有应对“多系列对象构建”的需求变化,则没有必要使用…
工厂方法(factory method)
动机(Motivation) 在软件系统中,经常面临着“某个对象”的创建工作:由需求的变化,这个对象经常面临着剧烈的变化,但是它却拥有比较稳定的接口.如何应对这种变化?如何提供一种“封装机制”来隔离出“这个易变对象”的变化,从而保持系统中“其他依赖该对象的对象”不随着需求改变而改变? 意图(Intent) 定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method使得一个类的实例化延迟到子类. Factory Method模式的几个要点 (1) Factory Metho…
react.js 从零开始(六)Reconciliation
Reconciliation React 的关键设计目标是使 API 看起来就像每一次有数据更新的时候,整个应用重新渲染了一样.这就极大地简化了应用的编写,但是同时使 React 易于驾驭,也是一个很大的挑战.这篇文章解释了我们如何使用强大的试探法来将 O(n3) 复杂度的问题转换成 O(n) 复杂度的问题. 动机(Motivation) 生成最少的将一颗树形结构转换成另一颗树形结构的操作,是一个复杂的,并且值得研究的问题.最优算法的复杂度是 O(n3),n 是树中节点的总数. 这意味着要展…
OKL4虚拟化技术跟踪
这篇博客准备介绍OKL4的研究进展,本文的内容主要根据我个人阅读<OKL4_LongPaper_2010_HW_VM>这篇文章之后的理解,我也根据这篇论文的内容做了一些实验,奈何此论文涉及内容太广,有一些arm硬件我也不太熟,而且由于时间有限,只能做一部分它提到的实验,没做过的实验我会介绍我的分析和理解,如果有问题希望读者批评指正. 这篇论文不会对所涉及的每一个虚拟化名词和技术都展开介绍,读者可以自行Google或者参看ARM文档,我建议读者遇到不懂的部分先通过Google理解大致含义再通过阅…
.Net23种设计模式
C#常见的设计模式 一.概要: 模式分为三种,设计模式.体系结构模式与惯用法.其中惯用法是一种语言紧密相关的模式,例如,定界加锁模式其实是一种惯用法. 在C#项目开发过程中,很多情况下您已经使用了某些模式,但或许您并不知道自己所使用的这种解决方案是一种已经被总结归纳的模式. 工厂.策略.桥接.模板方法.代理等等23种Gof经典模式是属于设计模式,设计模式的粒度相对较小,基本上用于提高模块内部的可扩展性和可维护性需求 三层.MVC.IoC/DI等属于体系结构模式,粒度比设计模式大,它是从项目的整体…
3.建造者模式(Builder)
Builder模式的缘起: 假设创建游戏中的一个房屋House设施,该房屋的构建由几部分组成,且各个部分富于变化.如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正.....动机(Motivation): 在软件系统中,有时候面临一个"复杂对象"的创建工作,其通常由各个部分的子对象用一定算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合到一起的算法却相对稳定. 如何应对这种变化呢?如何提供一种"封装机…
1.单件模式(Singleton Pattern)
创建型模式---单件模式(Singleton Pattern)动机(Motivation): 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性.以及良好的效率. 如何绕过常规的构造器,提供一种机制来保证一个类只创建一个实例? 这应该是类设计者的责任,而不是类使用者的责任.结构图: 意图: 保证一个类仅有一个实例,并提供一个访问它的全局访问点. --…
sift拟合详解
1999年由David Lowe首先发表于计算机视觉国际会议(International Conference on Computer Vision,ICCV),2004年再次经David Lowe整理完善后发表于International journal of computer vision(IJCV).截止2014年8月,该论文单篇被引次数达25000余次.---来自百科 本打算对04年的论文进行翻译,结果.居然搜到完整翻译版,虽然翻译的不太好,不过有聊胜于无.本文的讲解大部分主要还是借鉴了…
计算机视觉-sift(1)原理
1999年由David Lowe首先发表于计算机视觉国际会议(International Conference on Computer Vision,ICCV),2004年再次经David Lowe整理完善后发表于International journal of computer vision(IJCV).截止2014年8月,该论文单篇被引次数达25000余次.---来自百科 本打算对04年的论文进行翻译,结果.居然搜到完整翻译版,虽然翻译的不太好,不过有聊胜于无.本文的讲解大部分主要还是借鉴了…
论文笔记:Emotion Recognition From Speech With Recurrent Neural Networks
动机(Motivation) 在自动语音识别(Automated Speech Recognition, ASR)中,只是把语音内容转成文字,但是人们对话过程中除了文本还有其它重要的信息,比如语调,情感,响度.这些信息对于语音的理解也是很重要的.本文关注其中一个点,如何识别出语音的情感,即语音情感识别(Speech Emotion Recognition, SER). 语音情感识别的三个难点 1. 感情是主观的:不同人对于同一段语音,理解出的情感不尽相同,而且存在一定的文化差异. 2. 感情在语…
C++设计模式 之 “对象创建”模式:Factory Method、Abstract Factory、Prototype、Builder
part 0 “对象创建”模式 通过“对象创建” 模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定.它是接口抽象之后的第一步工作. 典型模式 Factory Method Abstract Factory Prototype Builder Part 1 Factory Method 工厂方法 动机(Motivation) 在软件系统中,经常面临着创建对象的工作:由于需求的变化,需要创建的对象的具体类型经常变化. 如何应对这种变化?如何绕过常规的…
C++设计模式 之 “单一职责”模式:Decorator、Bridge
part 1 “单一职责”模式 在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任. 典型模式 Decorator Bridge part 2.1 Decorator 装饰模式 动机(Motivation) #在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性:并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的…
C++设计模式 之 “组件协作”模式:Template Method、Strategy、Observer
“组件协作”模式: #现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式. #典型模式: Template Method. Strategy. Observer / Event part 1 Template Method 模版模式 动机(Motivation) #在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间…
面向对象设计模式纵横谈:Bridge 桥接模式(笔记记录)
桥接模式是一个比较难理解的设计模式,设计和分析的时候也不容易把握,咱们听听“李建忠”老师是怎么来讲的.我们还是从演变的角度来说问题,一步一步的来把问题说清楚.先谈谈“抽象”和“实现”的关系. 抽象与实现 抽象不应该依赖于实现细节,实现细节应该依赖于抽象.这个东西很容易理解,抽象的东西是从众多的实例里面提取出来的精华,最原始,最稳定的东西,枝枝叶叶都已经去掉了. 就像建房子一样,我们一定要把地基打结实,如果地基天天改,上面的房子也很难建的起来,就算建起来也要拆了重新来建. 再者说,如果抽象B由于固…
面向对象设计模式纵横谈:Adapter 适配器模式(笔记记录)
适配(转换)的概念无处不在 适配,即在不改变原有实现的基础上,将原先不兼容的接口转换为兼容的接口.生活中适配转换的例子太多了,也是设计模式里面比较容易理解的一个模式. 动机(Motivation) 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的. 如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口? 意图(Intent) 将一个类的接口转换成客户希望的另一个接口.Adap…
面向对象设计模式纵横谈:Prototype 原型模式(笔记记录)
有一段时间没写东西了,今天继续把没写完的设计模式写完,今天这堂课是创建型设计模式的最后一堂课,原型设计模式,它同样也是解决了对象在创建的过程中的解耦合的情况,面对变化使代码更稳定,更准确的说是使创建对象的主业务逻辑更稳定.好了,我们继续.我们县讨论一下依赖关系. 依赖关系的倒置 抽象不应该依赖于实现细节,实现细节应该依赖于抽象. -抽象A直接依赖于实现细节b,实现细节b就类似我要吃米饭,上午可能要吃米饭,下午就可能要吃炸酱面,每个人习惯不同,这个是经常变化的.对于软件设计来说,我们可…
面向对象设计模式纵横谈:Factory Method 工厂方法模式(笔记记录)
从耦合关系谈起 耦合关系直接决定着软件面对变化时的行为 -模块与模块之间的紧耦合使得软件面对变化时,相关模块都要随之更改 -模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变 抽象部分变化慢,细节(具体)部分变化快:高层部分变化慢,底层部分变化快. 当我们对于系统的认识无法梳理出上面的图时,最好不要一开始就用设计模式,设计模式其实是一个演绎的过程.当我们对软件认识不断深化时,慢慢就会知道哪些是主要的,哪些是次要的,就能梳理出一个抽象和具体的层次,再考虑用哪…
面向对象设计模式纵横谈:Builder 生成器模式(笔记记录)
Builder模式的缘起 假设创建游戏中的一个房屋House设施,该房屋的构建由几个部分组成,且各个部分要富于变化. 如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正…… 动机(Motivation) 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定. 如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变…
【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 15—Anomaly Detection异常检测
Lecture 15 Anomaly Detection 异常检测 15.1 异常检测问题的动机 Problem Motivation 异常检测(Anomaly detection)问题是机器学习算法的一个常见应用.这种算法虽然主要用于无监督学习问题,但从某些角度看,它又类似于一些监督学习问题.举例: 当飞机引擎从生产线上流出时需要进行QA(质量控制测试),数据集包含引擎的一些特征变量,比如运转时产生的热量,或者振动等.当有一个新的飞机引擎从生产线上流出,它具有特征变量 xtest .异常检测问…