精华内容
下载资源
问答
  • 关于局部特征介绍

    千次阅读 2014-08-03 17:16:09
    所谓局部特征,顾名思义就是一些局部才会出现的特征,这个局部,就是指一些能够稳定出现并且具有良好的可区分性的一些点了。

    局部特征概念   

         所谓局部特征,顾名思义就是一些局部才会出现的特征,这个局部,就是指一些能够稳定出现并且具有良好的可区分性的一些点了。这样在物体不完全受到遮挡的情况下,一些局部特征依然稳定存在,以代表这个物体(甚至这幅图像),方便接下来的分析。

        我们可以看下面这个图,左边一列是完整图像,中间一列是一些角点(就是接下来我们要讲的局部特征),右边一列则是除去角点以外的线段。不知道你会不会也觉得你看中间一列的时候能更敏感地把他们想象成左边一列的原始物品呢?一方面说,如果我们用这些稳定出现的点来代替整幅图像,可以大大降低图像原有携带的大量信息,起到减少计算量的作用。另一方面,当物体受到干扰时,一些冗余的信息(比如颜色变化平缓的部分和直线)即使被遮挡了,我们依然能够从未被遮挡的特征点上还原重要的信息。

        把局部特征说的这么好听,你也许会问怎样的特征能够被当做局部特征点呢?我们不妨来看下面的这幅图:

        我们选择了3个部分:边缘的点、边缘的线、变化缓慢的天空,当我在左边的图像中选择哪个部分的时候,你最有可能从右边的图像中找到对应的部分来呢?很显然是边缘的点吧-------天空,那么多都是一样的;而边缘,一条直线往左看往右看都是差不多的,你让我选哪个点(这也叫做aperture problem);而顶点相比之下更具有唯一性,所以局部特征最初的研究也就是从角点开始的(比如Harris Corner)。


    好的特征应该具有以下几个特点:

      •     可重复性:不同图像相同的区域应该能被重复检测到,而且不受到旋转、模糊、光照等因素的影响;
      •   局部性:特征应该是局部的,从而减少被遮挡的可能性
      •     独特性:不同的检测子,应该可以被区分出来,而为了区分它们,应运而生的就是与检测对应的描述子了;
      •     数量性:检测到的特征数目一定要多,然后可以通过一个简单的阈值就可以调整;
      •     准确性:是在哪出现的,最好就在哪被找到;
      •     高效性:检测的效率越高越好。
    以上6个性质中,可重复性是最重要的,关于可重复性,主要依赖两点:


             1:不变性,指局部特征不随图像大的变形而改变。

             2:鲁棒性,局部特征对于小的变形应该不敏感。


    局部特征的应用


       局部特征原则上可以运用到任何有可能需要图像或其中物体之间配准的应用中,例如二维图像中的物体识别,三维重建,运动跟踪和分割,机器人定位,图像拼接等。

       

    参考文献及地址:

    http://download.csdn.net/download/jiang1st2010/4343689  

    http://blog.csdn.net/jiang1st2010/article/details/7621681  

    http://www.sigvc.org/bbs/thread-165-1-1.html


        

    展开全文
  • 稳定稳定性是第一前提,如系统崩溃恢复容灾备份这些,主要是一些数据保护的机制,还有就是程序参数的校验、异常的处理、事务的回滚、程序边界的设计(合理的边界划分可以避免服务的连锁崩溃)、对账机制等,这些...

    稳定性

    稳定性是第一前提,如系统崩溃恢复容灾备份这些,主要是一些数据保护的机制,还有就是程序参数的校验、异常的处理、事务的回滚、程序边界的设计(合理的边界划分可以避免服务的连锁崩溃)、对账机制等,这些都是日常生活中常用的一些手段在计算机领域的体现,更详细的设计就不深入的分析了。

    高并发

    通过多年来对操作系统的研究,以及结合多年来各种语言的编程经验来说,高性能的程序的开发其实都是有规可循的。因为高性能的程序基本上都会面临相似的问题:如何提高并发,如何降低时间复杂度(但是并不是一味的降低,需要在空间复杂度之间做一个平衡)。

    如何提高并发:在目前的大多数程序中或多或少的都会遇到并发的问题,如何设计高效的并发非常的重要,从我个人的经验来说,当遇到一个会存在并发的业务场景,我会首先整理业务场景,并根据业务场景画出简单的数据流图,根据数据流图找出相应的会并发访问修改的数据,缩小加锁的粒度(只对需要并发访问的数据进行加锁),。

    然后分析数据的性质是否可以局部的并发,这种情况下就可以使用分段锁(再次减小加锁的粒度,一个比较出名的例子就是mysql的表锁、行锁机制)。

    最后再分析数据的访问性质,是读多写少(大部分都是这种情况)、读少写多(日志)、还是读写频率差不多,不同的业务情况使用不同的锁,比如针对读多写少的业务来说,为了提高读的并发性可以使用读写锁;针对并发粒度较小,且并发操作的耗时很短的情况,操作系统又提出了CAS操作(乐观锁),这种操作避免了上锁和释放锁耗时的过程,进一步提高了并发性,但是只是针对特定的场景才能达到想要的性能。

    当单台并发达到上限之后,就是分布式系统粉墨登场了,虽然分布式系统数据一致性会有一定的耗时,但是分布式系统的并发却有了显著的提高,一致性所带来的耗时/并发数带来的平均延迟并不大,所以能很好的满足系统的需求。

    高性能

    高性能的设计主要分为两个层面,一个层面是操作系统层面的,另外一个层面是业务层。

    操作系统层面:尽量使用操作系统和处理器自身的高性能的指令或者是运算方式,最简单的例子是位运算,针对一些特殊的算法如果能使用位运算实现,那么尽量使用位运算实现(这在很多算法面试题中都会考的,因为位运算在很多场景都有特别切合实际的使用),还有就是合理高效的使用操作系统自身的API,如DMA之类的机制,以及有效的利用缓存之类的机制。

    业务层面来说:首先需要为数据的存储设计合适的数据结构,这个也需要在空间利用率和访问复杂度之间做权衡;然后为业务中需要计算的场景设计高效的算法,算法的抽象是一个比较难的事情,算法设计需要在时间复杂度和空间复杂度中做权衡,还有就是针对算法的特性进行优化,可以参考算法设计,如果算法具有分治、动态规划这些算法的特性,那么此类算法可以采用并发机制提高算法的性能(算法设计很复杂,算法本身涉及到的很多高等数学的知识,还有就是算法的实现是否更加符合计算机的运行机制,建议多看看ACM算法设计相关书籍)

    展开全文
  • 设计模式(三)——面向对象设计原则

    千次阅读 多人点赞 2019-10-16 07:28:15
    设计模式需要遵循基本的软件设计原则。可维护性(Maintainability)和可复用性(Reusability)是衡量软件质量的重要的两个属性: 可维护性:软件能够被理解、改正、适应及扩展的难易程度 可复用性:软件能够被复用...

    设计模式需要遵循基本的软件设计原则。可维护性(Maintainability)和可复用性(Reusability)是衡量软件质量的重要的两个属性:

    • 可维护性:软件能够被理解、改正、适应及扩展的难易程度
    • 可复用性:软件能够被复用的难易程度

    面向对象设计的原则是支持可维护性复用,一方面需要实现设计方案或代码的复用,另一方面要保证系统易于扩展和修改,具有良好的可维护性。面向对象设计原则蕴含在各个设计模式中,是学习设计模式的基石,也是用于评价某个设计模式效果(Consequence)的重要指标。常见的面向对象设计原则包括:单一职责原则、开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则、合成复用原则、迪米特法则。

    1.单一职责原则

    单一职责原则:

    定义1:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中

    定义2:就一个类而言,应该仅有一个引起它变化的原因。

    首先需要知道两个原则:高内聚低耦合

    高内聚:内聚是对软件系统中元素职责相关性和集中度的度量。如果元素具有高度相关的职责,除了这些职责内的任务,没有其它过多的工作,那么该元素就具有高内聚性;反之则成为低内聚性。

    低耦合:耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据

    单一职责原则用于控制类的力度大小。软件设计过程中,如果一个类承担的职责越多,那么它被复用的可能性越小。(为什么?想想,如果一个类有许多接口,另一个类想复用其中一两个接口,还不如重新实现!)。另一方面,如果一个类承担的职责越多,各个职责耦合在一起,修改其中一个职责可能“牵一发而动全身”。因此,应该将这些职责进行分离,不同的职责封装在不同的类中。 

    2.开闭原则

    开闭原则:软件实体应对扩展开放,对修改关闭。

    开闭原则指软件实体(一个软件模块、一个由不同类组成的局部结构或一个独立的类) 应该在不修改原有代码的基础上进行扩展。软件设计过程中,需求可能会随时变化,需要根据需求扩展已有的设计。如果原有的设计符合开闭原则,那么扩展起来就比较安全(不会影响原有功能,稳定)和方便(易于扩展)。开闭原则的关键在于抽象化。可以为系统定义一个相对较为稳定的抽象层,将不同的实现行为放到具体的实现层中完成。

    举个例子:要设计一个计算器的类Computer,包含加、减两个功能,很自然的想法是在类Computer里声明并实现Add和Sub两个方法。那么如果要求再增加乘法功能,是不是要在Computer里增加Mul的方法呢?这就违背了开闭原则。

    3.里氏代换原则

    历史替换原则:所有引用基类的地方必须能透明地使用其子类的对象。

     在软件中,如果用子类对象来替换基类对象,程序将不会产生任何异常和问题,反过来不成立。为什么?很好理解,子类继承自基类,基类有的成员方法和成员属性,子类全都有;而子类可以增加新的方法和属性,所以反过来不成立。

    里氏代换原则的指导意义在于:尽可能地使用基类类型来对对象进行定义,而在运行时再确定子类类型,然后用子类对象替换父类对象设计时应将父类设计为抽象类或者接口,子类继承父类并实现在父类中声明的方法;运行时子类实例(对象)替换父类实例(对象),可以很方便地扩展系统功能。

    4.依赖倒转原则

    依赖倒转原则:高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。

     什么是高层,什么是低层呢?它们指的是继承(派生)中的基类子类关系,基类或者越抽象的类,层次越高。简单说,依赖倒转原则要求针对接口编程,不要针对实现编程

    依赖倒转原则要求再程序代码中传递参数时,或在关联关系中,尽量引用层次高的出现层类,即使用接口或抽象类来声明变量类型、参数类型声明、方法返回类型声明,以及数据类型转换等,而不要使用具体类来做这些事情。(其实这一点也符合里氏代换原则的指导意义,即对一个方法而言,返回基类的地方一定可以返回子类)。同样,依赖倒转原则设计的关键也在与抽象化设计。

    5.接口隔离原则

    接口隔离原则:客户端不应该依赖那些它不需要的接口。

    当一个接口太大时,应该将它根据需要分割成多个更细小的接口,每个接口仅承担一个相对独立的角色或功能,使用该接口的客户端仅需知道与之相关的方法即可。 但是,接口不能过小,否则系统中接口太多,不利于维护。一般而言,在接口中仅包含为某一类用户定制的方法即可。

    6.合成复用原则

    合成复用原则:优先使用对象组合,而不是通过继承来达到复用的目的。

     根据UML类图关系,合成复用原则指导在软件设计时,优先使用关联、聚合和组合关系,尽量少用泛化(继承)。对象组合可以使系统更加灵活(黑箱复用),降低类与类之间的耦合度,一个类的变化尽可能不影响其他类(父类和子类耦合度高不高?)。如果要使用继承,则需考虑里氏代换原则和依赖倒转原则。继承关系会破坏系统的封装性,会将基类的实现细节暴露给子类(白箱复用),如果基类发生改变,那么子类的实现也不得不改变。

    7.迪米特法则

     迪米特法则:每一个软件单位对其他单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位

    迪米特法则要求一个软件实体应当尽可能少地与其他实体发生相互作用。如果一个系统负荷迪米特法则,那么当修改其中某一个模块时就会尽量少地影响其他模块。应用迪米特法则可以降低系统的耦合度。在类的设计上应该注意以下几点:在类的划分上应尽量创建松耦合的类,类之间的耦合度越低,越有利于复用;类的结构设计上,每一个类都应该降低其成员变量和成员函数的访问权限。


    欢迎关注知乎专栏:Jungle是一个用Qt的工业Robot

    欢迎关注Jungle的微信公众号:Jungle笔记

     

    展开全文
  • 面向对象设计的七大原则(包括SOLID原则原则概述1. 单一职责原则(Single Responsibility Principle)2. 开闭原则(Open Close Principle)3. 里氏替换原则(Liskov Substitution Principle)4. 接口隔离原则...

    原则概述

    1. 单一职责原则(Single Responsibility Principle)

    每一个类应该专注于做一件事情。
    

    2. 开闭原则(Open Close Principle)

    面向扩展开放,面向修改关闭。
    

    3. 里氏替换原则(Liskov Substitution Principle)

    超类存在的地方,子类是可以替换的。
    

    4. 接口隔离原则(Interface Segregation Principle)

    应当为客户端提供尽可能小的单独的接口,而不是提供大的总的接口。
    

    5. 依赖倒置原则(Dependence Inversion Principle)

    实现尽量依赖抽象,不依赖具体实现。
    

    6. 迪米特法则(Law Of Demeter)

    又叫最少知识原则,一个软件实体应当尽可能少的与其他实体发生相互作用。
    

    7. 组合/聚合复用原则(Composite/Aggregate Reuse Principle CARP)

    尽量使用合成/聚合达到复用,尽量少用继承。原则: 一个类中有另一个类的对象。
    

    原则详解

    1. 单一职责原则(Single Responsibility Principle)

    因为:

    可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;提高类的可读性,提高系统的可维护性;变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。需要说明的一点是单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都适用单一职责原则。

    所以:

    从大局上看Android中的Paint和Canvas等类都遵守单一职责原则,Paint和Canvas各司其职。

    示例:

    新建一个Rectangle类,该类包含两个方法,一个用于把矩形绘制在屏幕上,一个方法用于计算矩形的面积。

    Rectangle类违反了SRP原则。Rectangle类具有两个职责,如果其中一个改变,会影响到两个应用程序的变化。

    一个好的设计是把两个职责分离出来放在两个不同的类中,这样任何一个变化都不会影响到其他的应用程序。

    2. 开闭原则(Open Close Principle)

    因为:

    开放封闭原则主要体现在对扩展开放、对修改封闭,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。软件需求总是变化的,世界上没有一个软件的是不变的,因此对软件设计人员来说,必须在不需要对原有系统进行修改的情况下,实现灵活的系统扩展。

    所以:

    可以通过Template Method模式和Strategy模式进行重构,实现对修改封闭,对扩展开放的设计思路。
    封装变化,是实现开放封闭原则的重要手段,对于经常发生变化的状态,一般将其封装为一个抽象,拒绝滥用抽象,只将经常变化的部分进行抽象。

    示例:

    public boolean sendByEmail(String addr, String title, String content) {
    }public boolean sendBySMS(String addr, String content) {
    }
    // 在其它地方调用上述方法发送信息
    sendByEmail(addr, title, content);
    sendBySMS(addr, content);
    

    如果现在又多了一种发送信息的方式,比如可以通过QQ发送信息,那么不仅需要增加一个方法sendByQQ(),还需要在调用它的地方进行修改,违反了OCP原则,更好的方式是

    抽象出一个Send接口,里面有个send()方法,然后让SendByEmail和SendBySMS去实现它既可。这样即使多了一个通过QQ发送的请求,那么只要再添加一个SendByQQ实现类实现Send接口既可。这样就不需要修改已有的接口定义和已实现类,很好的遵循了OCP原则。

    3. 里氏替换原则(Liskov Substitution Principle)

    因为:

    里氏替换原则告诉我们,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。里氏替换原则是实现开闭原则的重要方式之一,由于使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。

    所以:

    使用里氏替换原则时需要注意,子类的所有方法必须在父类中声明,或子类必须实现父类中声明的所有方法。尽量把父类设计为抽象类或者接口,让子类继承父类或实现父接口,并实现在父类中声明的方法,运行时,子类实例替换父类实例,我们可以很方便地扩展系统的功能,同时无须修改原有子类的代码,增加新的功能可以通过增加一个新的子类来实现。

    从大局看Java的多态就属于这个原则。

    4. 接口隔离原则(Interface Segregation Principle)

    不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。

    客户模块不应该依赖大的接口,应该裁减为小的接口给客户模块使用,以减少依赖性。如Java中一个类实现多个接口,不同的接口给不用的客户模块使用,而不是提供给客户模块一个大的接口。

    示例:

    public interface Animal {
    	public void eat(); // 吃
    	public void sleep(); // 睡
    	public void crawl(); // 爬
    	public void run(); // 跑
    }
    
    public class Snake implements Animal {
    	public void eat() {
    	}
    	public void sleep() {
    	}
    	public void crawl() {
    	}
    	public void run() {
    	}
    }
    
    public class Rabit implements Animal {
    	public void eat() {
    	}
    	public void sleep() {
    	}
    	public void crawl() {
    	}
    	public void run() {
    	}
    }
    

    上面的例子,Snake并没有run的行为而Rabbit并没有crawl的行为,而这里它们却必须实现这样不必要的方法,更好的方法是crawl()和run()单独作为一个接口,这需要根据实际情况进行调整,反正不要把什么功能都放在一个大的接口里,而这些功能并不是每个继承该接口的类都所必须的。

    5. 依赖倒置原则(Dependence Inversion Principle)

    因为:

    具体依赖抽象,上层依赖下层。假设B是较A低的模块,但B需要使用到A的功能,这个时候,B不应当直接使用A中的具体类;而应当由B定义一抽象接口,并由A来实现这个抽象接口,B只使用这个抽象接口;这样就达到了依赖倒置的目的,B也解除了对A的依赖,反过来是A依赖于B定义的抽象接口。通过上层模块难以避免依赖下层模块,假如B也直接依赖A的实现,那么就可能造成循环依赖。

    所以:

    采用依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,减少并行开发引起的风险,提高代码的可读性和可维护性。

    从大局看Java的多态就属于这个原则。

    6. 迪米特法则(Law Of Demeter)

    因为:

    类与类之间的关系越密切,耦合度也就越来越大,只有尽量降低类与类之间的耦合才符合设计模式;对于被依赖的类来说,无论逻辑多复杂都要尽量封装在类的内部;每个对象都会与其他对象有耦合关系,我们称出现成员变量、方法参数、方法返回值中的类为直接的耦合依赖,而出现在局部变量中的类则不是直接耦合依赖,也就是说,不是直接耦合依赖的类最好不要作为局部变量的形式出现在类的内部。

    所以:

    一个对象对另一个对象知道的越少越好,即一个软件实体应当尽可能少的与其他实体发生相互作用,在一个类里能少用多少其他类就少用多少,尤其是局部变量的依赖类,能省略尽量省略。同时如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一方法的话,可以通过第三者转发这个调用。

    从大局来说Android App开发中的多Fragment与依赖的Activity间交互通信遵守了这一法则。

    7. 组合/聚合复用原则(Composite/Aggregate Reuse Principle CARP)

    因为:

    其实整个设计模式就是在讲如何类与类之间的组合/聚合。在一个新的对象里面通过关联关系(包括组合关系和聚合关系)使用一些已有的对象,使之成为新对象的一部分,新对象通过委派调用已有对象的方法达到复用其已有功能的目的。也就是,要尽量使用类的合成复用,尽量不要使用继承。

    如果为了复用,便使用继承的方式将两个不相干的类联系在一起,违反里氏代换原则,哪是生搬硬套,忽略了继承了缺点。继承复用破坏数据封装性,将基类的实现细节全部暴露给了派生类,基类的内部细节常常对派生类是透明的,白箱复用;虽然简单,但不安全,不能在程序的运行过程中随便改变;基类的实现发生了改变,派生类的实现也不得不改变;从基类继承而来的派生类是静态的,不可能在运行时间内发生改变,因此没有足够的灵活性。

    所以:

    组合/聚合复用原则可以使系统更加灵活,类与类之间的耦合度降低,一个类的变化对其他类造成的影响相对较少,因此一般首选使用组合/聚合来实现复用;其次才考虑继承,在使用继承时,需要严格遵循里氏代换原则,有效使用继承会有助于对问题的理解,降低复杂度,而滥用继承反而会增加系统构建和维护的难度以及系统的复杂度,因此需要慎重使用继承复用。

    参考文章:
    https://www.cnblogs.com/sunflower627/p/4718702.html
    https://www.imooc.com/article/51098#

    展开全文
  • 【设计原则】软件开发中的原则

    千次阅读 2018-07-05 19:51:36
    本文转自:http://www.cnblogs.com/pengdai/p/9151800.html在软件开发中,...本文主要将总结这些常见的原则,和具体阐述意义。 -----2018年1月 @pdai参考文章设计模式六大原则 http://www.uml.org.cn/sjms/201211...
  • 设计模式之面向对象七大基本原则

    万次阅读 2015-04-27 16:25:48
    概述在运用面向对象的思想进行软件设计时,需要遵循的原则一共有7个,他们是:1. 单一职责原则(Single Responsibility Principle)每一个类应该专注于做一件事情。2. 里氏替换原则(Liskov Substitution Principle...
  • 软件开发编程规范及原则

    万次阅读 2016-12-07 22:05:54
    头文件应向稳定的方向包含。   规则: A. 每一个.c文件应有一个同名.h文件,用于声明需要对外公开的接口; B. 禁止头文件循环依赖; C. .c/.h文件禁止包含用不到的头文件; D. 头文件应当自包含; ...
  • 面向对象设计原则

    万次阅读 2018-09-28 15:36:19
    面向对象的软件设计中,有23种经典的设计模式,是一套前人代码设计经验的总结,如果把设计模式比作武功招式,那么设计原则就好比是内功心法。常用的设计原则有七个,下文将具体介绍。 七种设计原则简单归纳如下 ...
  • 图像局部特征(十四)--MSER特征

    千次阅读 2016-07-18 17:10:03
    最大稳定极值区域(MSER-Maximally Stable Extremal Regions)可以用于图像的斑点区域检测。该算法最早是由Matas等人于2002年提出,它是基于分水岭的概念。 MSER的基本原理是对一幅灰度图像(灰度值为0~255)取...
  • 胡侃软件之设计原则

    千次阅读 2019-06-01 10:23:23
    2. 设计原则 2.1. 职责单一原则 2.2. 里氏替换原则 2.3. 依赖倒转原则 2.4. 接口隔离原则 2.5. 迪米特原则 2.6. 开闭原则 1 概述 软件设计是从需求规格说明书开始,根据需求分析阶段确定的功能...
  • 设计模式的六大原则

    万次阅读 多人点赞 2019-05-16 17:50:03
    一、单一职责原则(Single Responsibility Principle) 二.开闭原则(Open-Closed Principle, OCP) 三、里氏代换原则(Liskov Substitution Principle, LSP) 四、依赖倒置原则(Dependence Inversion Principle,...
  • 就是说要尽量的使用合成和聚合,而不是继承关系达到复用的目的,组合能更好的实现封装,比继承具有更大的灵活性和更稳定的结构。 该原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的...
  • DevOps的三条基本原则:流动/反馈/文化。第一条原则(流动)需要达成快速平稳地从开发向运维的...在这个过程中,作为开发或者运维的局部目标被弱化,而开发和运维等协同所产生的整体的共同目标在这条原则中得到强化。
  • 设计模式的基本原则

    千次阅读 2016-06-06 14:36:18
    设计模式六大原则 设计模式六大原则(1):单一职责原则(一个类负责一个功能) 设计模式六大原则(2):里氏替换原则(子类可以扩展父类的功能,但不能改变父类原有的功能) 设计模式六大原则(3):依赖倒置原则...
  • 面向对象设计原则之开闭原则

    万次阅读 多人点赞 2012-05-05 15:05:50
    开闭原则是面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。开闭原则由Bertrand Meyer于1988年提出,其定义如下: 开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放...
  • 深入理解设计模式-设计模式七大原则

    千次阅读 多人点赞 2021-05-26 09:44:41
    深入理解设计模式-设计模式七大原则 文章目录前言一、单一职责原则1.基本介绍2.注意事项和细节二、接口隔离原则1.基本介绍三、依赖倒转原则1.基本介绍2.注意事项和细节四、里氏替换原则1.基本介绍五、开闭原则1....
  • 软件开发中的原则

    千次阅读 2018-06-12 10:06:05
    在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义。本文主要将总结这些常见的原则,和具体阐述意义。参考文章设计模式六大原则 ...
  • Xilinx FPGA全局时钟和局部时钟资源

    千次阅读 2019-09-12 09:40:10
    如果使用不当,不但会影响设计的工作频率和稳定性等,甚至会导致设计的综合、实现过程出错。Xilinx FPGA的7系列分为全局时钟(Global clock)和局部时钟(Regional clock)资源。目前,大型设计一般推荐使用同步时序电路...
  • 面向对象的五大基本原则

    千次阅读 2019-01-06 20:18:24
    面向对象的七(或五大原则,前五项)大基本原则:单一职责原则(SRP) 、开放封闭原则(OCP) 、里氏替换原则(LSP)、 依赖倒置原则(DIP)、 接口隔离原则(ISP)、迪米特法则(Law Of Demeter)、组合/聚合复用原则...
  • 程序设计的六大原则-带图

    千次阅读 2018-04-19 16:38:45
    关于设计模式的六大设计原则的资料网上很多,但是很多地方解释地都太过于笼统化,我也找了很多资料来看,发现CSDN上有几篇关于设计模式的六大原则讲述的比较通俗易懂,因此转载过来。  原作者博客链接:...
  • 开闭原则理论

    2019-05-28 21:10:52
    开闭原则(OCP原则):面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。 定义 一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。 软件实体: ...
  • 面向对象的重要原则

    千次阅读 2016-04-18 12:10:30
    1) Open-Close Principle(OCP),开-闭原则,讲的是设计要对扩展有好的支持,而对修改要严格限制。这是最重要也是最为抽象的原则,基本上我们所说的Reusable Software既是基于此原则而开发的。其他的原则也是对...
  • 软件设计原则

    千次阅读 2018-08-23 21:57:40
    (1)、可重用性:遵循DRY(Don't repeat yourself)原则,减少软件中的重复代码。 (2)、可拓展性:当软件需要升级增加新的功能,能够在现有的系统架构上方便创建新的模块,而不需要更改软件现有的结构,也不会...
  • 分别就是Java设计模式六大原则和常用的23种设计模式了。本篇是对六大原则的整理。(最后一种是哈姆雷特)1.开闭原则(Open Close Principle)定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 开放-...
  • java开发六大基本原则

    千次阅读 多人点赞 2017-11-27 10:12:49
    设计模式之六大原则(转载)  关于设计模式的六大设计原则的资料网上很多,但是很多地方解释地都太过于笼统化,我也找了很多资料来看,发现CSDN上有几篇关于设计模式的六大原则讲述的比较通俗易懂,因此转载过来。 ...
  • 1. SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性; 2. 独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行...
  • 如果局部变量的名字和成员变量的名字相同, 要想在该方法中使用成员变量,必须使用关键字this 成员变量和局部变量的区别成员变量:1、成员变量定义在类中,在整个类中都可以被访问。2、成员变量随着对象的建立而...
  • 局部模型 一、神经网络 人工神经网络,顾名思义起源于模拟人脑,其目的是理解人脑功能,认知科学家和神经学家共同构建了神经网络模型,并开展了模拟研究。这项技术与工程结合之后,可以帮助我们
  • Java面向对象设计的六大原则

    千次阅读 2018-05-17 12:00:58
    单一职责原则——SRP开闭原则——OCP里式替换原则——LSP依赖倒置原则——DIP接口隔离原则——ISP迪米特原则——LOD单一职责原则单一职责原则的定义是就一个类而言,应该仅有一个引起他变化的原...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,197
精华内容 14,478
关键字:

局部稳定的原则