代码改变世界

k-means聚类算法

2015-09-14 11:13 by 你吃不吃麦芽糖, 398 阅读, 0 推荐, 收藏,
摘要:首先先说一下聚类的概念:聚类就是现在有m个元素,每个元素都有n个可以观察到的特征属性,可以使用算法把这m个元素划分为k个子集,使得每个子集内部元素之间的相异度尽可能小,不同子集之间元素的相异度尽可能大。其中每一个子集叫做簇。与分类不同,分类是有监督学习,要求分类前明确类别,并断言每一个元素属于哪一个... 阅读全文

迭代子模式(Iterator)

2015-08-27 20:29 by 你吃不吃麦芽糖, 269 阅读, 0 推荐, 收藏,
摘要:迭代子(Iterator)模式又叫游标模式,是对象的行为模式。迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象。迭代子模式涉及到以下几个角色:抽象迭代子(Iterator)角色:此抽象角色定义出遍历元素所需的接口。具体迭代子(ConcreteIterator)角色:此角色实现了Ite... 阅读全文

Java对观察者模式的支持

2015-08-26 23:19 by 你吃不吃麦芽糖, 238 阅读, 0 推荐, 收藏,
摘要:在Java语言的Java.util库里面,提供了一个observable类以及一个observer接口,构成Java语言对观察者模式的支持。下面直接看如何使用Java对观察者模式的支持:在下面的例子里,被观察者对象叫做watched,也就是被监视着;而观察者对象叫做watcher,也就是监视人的意思... 阅读全文

观察者模式(Observer)

2015-08-26 20:11 by 你吃不吃麦芽糖, 230 阅读, 0 推荐, 收藏,
摘要:观察者模式是对象的行为模式,又叫做发布-订阅模式、源-监听器模式或者从属者模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听同一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。下面给出一个简单的示意性系统,在该系统中有如下几个角色:抽象主题... 阅读全文

模板方法模式(Template Method)

2015-08-26 17:11 by 你吃不吃麦芽糖, 361 阅读, 0 推荐, 收藏,
摘要:模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造子的行为实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法。下面考虑一个计算存款利息的例子。假设系统需要支持两种存款账号,即货币市场(... 阅读全文

策略模式(Strategy)

2015-08-26 09:41 by 你吃不吃麦芽糖, 212 阅读, 0 推荐, 收藏,
摘要:策略模式是对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立地类中,从而使得它们可以自由的相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式是对算法的包装,是把使用算法的责任和算法本身分隔开,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列... 阅读全文

桥梁模式案例 八戒“转世投胎”的故事

2015-08-25 18:15 by 你吃不吃麦芽糖, 257 阅读, 0 推荐, 收藏,
摘要:本节从桥梁模式的观点出发,讨论《西游记》中天蓬元帅转世投胎成猪八戒的故事。如果存在灵魂的话,应当是抽象化角色,而肉体则是实现化角色。肉体为灵魂的功能提供了实现,就像具体Java类为抽象Java类提供了实现一样。“转世投胎”系统的UML类图:可以看出,“转世投胎”机制将尘世划分为两个等级结构:第一个等... 阅读全文

桥梁模式

2015-08-25 17:43 by 你吃不吃麦芽糖, 335 阅读, 0 推荐, 收藏,
摘要:桥梁模式的用意是“将抽象化与实现化脱耦,使得二者可以独立地变化”。所谓强关联,就是在编译时期已经确定的,无法在运行时期动态改变的关联;所谓弱关联,就是可以动态地确定并且可以在运行时期动态的改变的关联。在Java语言中,继承关系是强关联,而聚合关系是弱关联。桥梁模式所涉及的角色有:抽象化(Abstra... 阅读全文

门面模式(Facade)

2015-08-24 19:57 by 你吃不吃麦芽糖, 124 阅读, 0 推荐, 收藏,
摘要:现代的软件系统都是比较复杂的,设计模式的任务就是协助设计师处理复杂系统的设计。门面模式是对象的结构模式。外部与一个子系统的通信必须通过一个统一的门面对象进行,这就是门面模式。 阅读全文

代理模式(Proxy)

2015-08-24 17:52 by 你吃不吃麦芽糖, 193 阅读, 0 推荐, 收藏,
摘要:代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。代理模式的一个极其简单的例子,但是它具有代理模式所要求的功能,设计师可以使用这个例子作为蓝本,在一个Vector(或者任何其他对象)被调用之前和之后做出有意义的操作。实现代码如下:import java.... 阅读全文