书籍
文章平均质量分 69
David&Tea
这个作者很懒,什么都没留下…
展开
-
Head First-设计模式:工厂模式
工厂方法模式定义 工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到子类。 该方法通过子类继承来创建对象。 需求 披萨店有很多家分店,每个分店需要制作不同的风味的披萨,但是他们的制作过程是一样的。 传统设计 对于不同的披萨下载不同的订单中,但是订单中有一些相同的部分,所以需要提取出来,原创 2016-12-26 15:28:54 · 3216 阅读 · 1 评论 -
First-Head 设计模式:状态模式
状态模式定义 状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 需求 糖果机有多个状态,不同状态都有相应的办法,所以需要很多if条件,如果增加一个状态的话就需要改变所有的代码。 传统设计 对每个方法写四个if(如果有四个状态),如果增加一个状态,就在if中增加一个if条件。 Decorator模式原创 2017-01-08 18:36:48 · 2513 阅读 · 0 评论 -
Frist Head-设计模式:模板方法模式
模板方法模式定义 模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类之中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 需求 实现煮咖啡和煮茶,两者之间的步骤及其相似。 传统设计 将一样的步骤放在父类,不一样的步骤放在子类,然后子类继承。 Decorator模式 试用范围原创 2016-12-29 20:00:31 · 2392 阅读 · 0 评论 -
First Head-设计模式:命令模式
命令模式定义 命令模式将"请求"封装成对象,以便使用不同的请求,队列或日志来参数化其他对象、命令模式也支持可撤销的操作。 需求 一个遥控器控制不同的多个设备开关,遥控器上有6个设备的所有开关(12个)加上一个撤销上一个操作的按钮,每个设备的开关等是不同的类的不同方法,方法名也不一样,如何实现这个类。 传统设计 12个开关分别绑定不同的设备的开关方法原创 2016-12-29 16:07:19 · 3319 阅读 · 0 评论 -
Head First-设计模式:单件模式
单件模式定义 单件模式确保一个类只有一个实例,并提供一个全局访问点。 需求 巧克力工厂使用锅炉制造巧克力,锅炉只能有一个实例。 传统设计 使用静态方法来保证一个实例。 Decorator模式 试用范围 当某个类只能有一个实例时。原创 2016-12-29 14:45:26 · 3325 阅读 · 0 评论 -
First-Head:迭代器模式和组合模式
迭代器模式定义 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 需求 煎饼屋和午餐店要合并,但是煎饼屋采用arraylist实现,午餐店采用数组实现,现在服务员要告诉顾客有哪些食品。 传统设计 两个for循环分别读取arraylist和数组,然后打印。当还有一个比如说咖啡店时,就需要再来一个for循环,太不好了。原创 2017-01-05 18:55:29 · 2502 阅读 · 0 评论 -
数据结构与算法分析:算法设计技巧
算法设计技巧贪婪算法 顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好原创 2016-12-27 17:48:23 · 4647 阅读 · 0 评论 -
数据结构与算法分析:图论
图论算法定义 路径:由一个顶点序列使得这样一条路径。 环:路径,路径长为0,为环。 简单路径:不包含环,所有顶点是互异的,但是第一个和最后一个可以是相同的。 圈:满足的路径称为圈,若各该路径是简单路径,则为简单圈。 连通的无向图:无向图中的每个顶点之间都有路径。 强连通的有向图:每个顶点之间都有路径。 有向图的基础图:去掉有向图上的弧所原创 2016-12-27 14:51:30 · 4068 阅读 · 0 评论 -
数据结构与算法分析:树
算法阅读目的: 整体把握算法框架 了解算法思想 阅读方法: 1/3时间阅读 1/3时间总结 1/3应用 注: 若不做特别说明,则logn表示log2n引论Java泛型 算法分析算法复杂度 Ο,读音:big-oh、欧米可荣(大写);表示上界(tightness unknown),小原创 2016-12-26 15:15:02 · 2117 阅读 · 0 评论 -
数据结果和算法分析:前三章
算法阅读目的: 整体把握算法框架 了解算法思想 阅读方法: 1/3时间阅读 1/3时间总结 1/3应用 注: 若不做特别说明,则logn表示log2n引论Java泛型 算法分析算法复杂度 Ο,读音:big-oh、欧米可荣(大写);表示上界(tightness unknown),小原创 2016-12-26 15:19:37 · 2230 阅读 · 0 评论 -
数据结果和算法分析:散列和堆
散列一般想法 散列函数 其中关系R为散列函数 分离链接法 hash函数的运行时间为O(1),所以插入和删除都为常量时间O(1)。(注意,插入和删除都是以元素x而非关键字k作为输入,所以不用查找。) 接下来分析查找特定元素的性能。对于一个存放了n个元素,具有m个槽的散列表T,定义它的装载因子(load factor)a为n/m,即每个槽原创 2016-12-26 15:20:48 · 3061 阅读 · 0 评论 -
数据结果和算法分析:排序和不相交集类
排序插入排序 平均情况:O(N2)最坏情况:O(N2)选择排序法 冒泡排序法 希尔排序 希尔排序也叫缩减增量排序。希尔排序使用一个序列h1,h2,h3, …, hn,叫做增量序列。当增量序列为1,2,5时,示意图如下: 以n=10的一个数组49, 38, 65, 97, 26, 13, 27, 49, 55, 4为例 第一次 ga原创 2016-12-26 15:21:44 · 2547 阅读 · 0 评论 -
Head First-设计模式:设计原则和设计评价
设计原则找出应用中可能需要变化的部分,把它们独立起来,不要和那些不需要变化的代码混在一起。 针对接口编程,而不是针对实现编程。 多用组合,少用继承 低耦合高内聚 类应该对扩展开放,对修改关闭 设计评价可复用 可扩充 可维护 低耦合 高内聚原创 2016-12-26 15:25:23 · 2408 阅读 · 0 评论 -
Head First-设计模式:设计原则和设计评价
设计原则找出应用中可能需要变化的部分,把它们独立起来,不要和那些不需要变化的代码混在一起。 针对接口编程,而不是针对实现编程。 多用组合,少用继承 低耦合高内聚 类应该对扩展开放,对修改关闭 设计评价可复用 可扩充 可维护 低耦合 高内聚原创 2016-12-26 15:25:35 · 2552 阅读 · 0 评论 -
Head First-设计模式:策略模式
策略(strategy)模式定义 定义了算法簇,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。 需求 鸭子类: 不同的鸭子不同外观 不同鸭子有些叫声一样,有些不一样 不同鸭子飞行方式可能不一样 传统设计 定义鸭子超类,其他鸭子继承,并有方法接口,不同鸭子实现接口。原创 2016-12-26 15:26:16 · 2632 阅读 · 0 评论 -
Head First-设计模式:观察者模式
观察者模式 定义 定义了一系列对象之间的一对多关系。当一个对象改变新状态,其他依赖者都会受到通知并自动更新。 需求 一个天气信息类,当天气信息发生变化是,会自动运行update()函数,此时,需要及时更新当前信息版,和未来预测版。 传统设计 定义天气信息类,然后直接在update()函数里面做所有的更新操作。 Obs原创 2016-12-26 15:27:12 · 2683 阅读 · 0 评论 -
Head First-设计模式:装饰者模式
装饰者(Decorator)模式定义 动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更加有弹性的替代方案。 需求 咖啡店买饮料,有不同的的基本咖啡,Cappuccino和Latte,然后有各种不同的调料,比如sugar, milk, salt. 不同的饮料有不同的价格和描述。 传统设计 定义咖啡类,然后不同调料的不同咖啡继承该类原创 2016-12-26 15:28:03 · 2814 阅读 · 0 评论 -
First Head-设计模式:代理模式
代理模式定义 代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问。 需求 糖果机经理想要查看糖果的运行状态,但是真正的糖果机并不想让经理看到别的实现,所以通过远程代理访问某个方法。 传统设计 判断产看人的权限,然后大量if语句来判断是否访问。 Decorator模式 试用范围 需要控制对象访问权限的时原创 2017-01-10 16:54:09 · 2931 阅读 · 0 评论