段渣渣推轮子的飙车场

轮子推不好,怎么能飙车?

UML入门

UML入门 简介 UML是统一建模语言(unified Modeling Language ) 非专利的第三代建模和规约语言 分类 结构式图形:强调的是系统式的建模 行为式图形:强调系统模型中触发的事件 交互式图形:属于行为式图形子集合,强调系统模型中的资料流程 结构式图形 静态图(类图...

2018-12-01 14:23:53

阅读数 24

评论数 0

依赖倒置原则

依赖倒置原则 定义:高层模块不应该依赖底层模块,二者应该都依赖其抽象 要点 抽象不应该依赖细节,细节应该依赖抽象 针对接口编程,不要针对实现编程 优点 可以减少类之间的耦合性,提高系统稳定性,提高代码可读性和可维护性,可减低修改程序所造成的风险 例子: 将课程信息抽象出来,便于以后扩展添加...

2018-12-01 14:23:10

阅读数 24

评论数 0

里氏替换原则

里氏替换原则 定义:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型。 第二种定义:所有引用基类的地方必须能透明地使用其子类的对象。只要有父类出现的地方,都可以用子类来替代,而且不会...

2018-11-27 14:31:48

阅读数 24

评论数 0

开闭原则

开闭原则 概念 定义:一个软件实体如类,模块和函数应该对扩展开方,对修改关闭。 优点 用抽象构建框架,用实现扩展细节 提高软件系统的可复用行及可维护性 代码示例 现有功能需求,打印出原本的价格和打折后的课程价格 依照开闭原则,最好是添加一个打折的课程类继承原始课程类,并且添加打折价格计算...

2018-11-27 14:31:21

阅读数 19

评论数 0

接口隔离原则

接口隔离原则 定义:用多个专门的接口,而不使用单一的总接口,客户端不应该依赖他不需要的接口 一个类对应一个类的依赖应该建立在最小的接口上 建立单一的接口,不要建立庞大臃肿的接口 尽量细化接口,接口中的方法尽量的少 注意适度原则,一定要适度 优点:符合我们所说的高内聚低耦合的设计思想,从而使得类...

2018-11-27 14:30:54

阅读数 23

评论数 0

建造者模式

建造者模式 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。 简介 意图:将一个复杂的构建与其...

2018-11-27 14:30:32

阅读数 30

评论数 0

简单工厂模式

简单工厂模式 简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些。因为它至少不是Gof23种设计模式之一。但它在实际的编程中经常被用到,而且思想也非常简单 模式定义 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Met...

2018-11-27 14:29:54

阅读数 28

评论数 0

合成复用原则

合成复用原则 定义:尽量使用对象组合/聚合而不是继承关系达到软件复用的目的 优点:可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类影响较小 例子:数据库连接添加,连接类进行抽象,不同数据库之间是同等级的实现类 ...

2018-11-27 14:29:17

阅读数 21

评论数 0

工厂方法模式

工厂方法模式 定义与类型 定义:工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。属于创建型 适用场景 创建对象需要大量的代码 客户端不需要知道产品类型如何创建的细节 一个类通过其子类来指定创建哪个对象 优点 用户只需要关心产品所对应的工...

2018-11-27 14:27:28

阅读数 40

评论数 0

迪米特原则

@(设计模式)[设计原则] 迪米特原则 定义:一个对象应该对其他对象保持最少的了解,又叫最少知道原则 强调只和朋友交流不和陌生人说话 朋友是指出现在成员变量、方法输入输出中出现的类、称为朋友类。而出现在方法体内的类不属于朋友类 尽量降低类与类之间的耦合 优点:降低类之间的耦合 例子 老板不需要...

2018-11-27 14:26:41

阅读数 17

评论数 0

单一职责原则

@(设计模式)[设计原则] 单一职责原则 定义:不要存在多于一个导致类变更的原因 一个类、方法、接口应该只负责一项职责 优点:降低类的复杂度,提高类的可读性,提高系统的可维护性,降低变更引起的风险 类级别例子:将走的鸟与飞行的鸟各自为一类 接口级别例子:课程管理接口与内容接口相互影响,应该分...

2018-11-27 14:26:18

阅读数 15

评论数 0

抽象工厂模式

抽象工厂模式 定义:抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生...

2018-11-27 14:25:16

阅读数 33

评论数 0

求的带权图最小生成树的Prim算法和Kruskal算法

求的带权图最小生成树的Prim算法和Kruskal算法 最小生成树的概念 最小生成树其实是最小权重生成树的简称。 一个连通图可能有多个生成树。当图中的边具有权值时,总会有一个生成树的边的权值之和小于或者等于其它生成树的边的权值之和。广义上而言,对于非连通无向图来说,它的每一连通分量同样有...

2018-08-02 15:16:08

阅读数 211

评论数 0

有权图的表示和存储

有权图的表示和存储 带权图的存储于无全图的存储差别在于边上,这里将边作为一个类存储。 Edge类 package MinimumSpanTrees; /** * @ Description: 图的边 类 * @ Date: Created in 07:47 2018/8/2 * ...

2018-08-02 15:15:25

阅读数 86

评论数 0

使用BellmanFord算法求带负权图的单源最短路径

使用BellmanFord算法求带负权图的单源最短路径 BellmanFord算法可以处理带不带负权环的图,及时权为负也可以接受,但是时间复杂度较高 贝尔曼-福特算法与迪科斯彻算法类似,都以松弛操作为基础,即估计的最短路径值渐渐地被更加准确的值替代,直至得到最优解。在两个算法中,计算时每个边之...

2018-08-02 15:12:07

阅读数 50

评论数 0

Dijkstra算法求带权图的单源最短路径

Dijkstra算法求带权图的单源最短路径 Dijkstra可以用来求不带负权的带权图 Dijkstra的核心是松弛操作,具体松弛操作是什么,请看代码吧。 使用索引堆优化过的Dijkstra算法的时间复杂度为O(Elog(V))O(Elog(V))O(Elog(V)) 实现代码 ...

2018-08-02 15:11:20

阅读数 95

评论数 0

求图的连通分量

求图的连通分量 什么是连通分量 无向图G的一个极大连通子图称为G的一个连通分量(或连通分支)。连通图只有一个连通分量,即其自身;非连通的无向图有多个连通分量。 实现代码 package GraphBasics; /** * @ Description: 求无全图的联通分量 ...

2018-08-01 18:57:30

阅读数 442

评论数 0

图的深度优先遍历寻路算法

图的深度优先遍历寻路算法 看注释吧 package GraphBasics; import java.util.Stack; import java.util.Vector; /** * @ Description:深度优先遍历寻路算法 * @ Date: Created in 1...

2018-08-01 18:56:21

阅读数 103

评论数 0

无权图的广度优先遍历寻找单源最短路径

图的广度优先遍历寻找最短路径 直接看代码 package GraphBasics; import java.util.LinkedList; import java.util.Stack; import java.util.Vector; /** * @ Description: 寻...

2018-08-01 18:55:49

阅读数 185

评论数 0

简单图的存储和表示

什么是简单图 在无向图中,关联一对顶点的无向边如果多于1条,则称这些边为平行边,平行边的条数称为重数。在有向图中,关联一对顶点的有向边如果多于1条,并且这些边的始点与终点相同(也就是它们的的方向相同),称这些边为平行边。含平行边的图称为多重图,既不含平行边也不含环的图称为简单图。 稠密图和...

2018-08-01 18:54:31

阅读数 76

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭