摘要: 代理模式,在UML类结构上很好理解, 不过在实际应用当中可能并不是很清楚代理模式应用在哪些场景里。这里给出《大话设计模式》中对代理模式应用场合的解释: 第一,远程代理,也就是为一个对象在不同地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。 第二,虚拟代理,是根据需要创建开销很大的 阅读全文
posted @ 2016-09-11 15:58 OKevin 阅读(559) 评论(0) 推荐(0) 编辑
摘要: 这里只简单说说装饰模式,因为对这个模式理解得还不是很透彻。暂时不能写出更深一点的内容。 什么是装饰模式呢?拟定一个场景,一个人需要穿衣打扮,我们可以写一个Person类,为它定义出N个方法,穿短袖,穿皮鞋,等等。要新增一个装饰的时候,我们在Person类里新增一个方法即可,但这违背了“方法-封闭”原 阅读全文
posted @ 2016-09-10 00:36 OKevin 阅读(484) 评论(0) 推荐(0) 编辑
摘要: 单例模式,顾名思义,在程序运行时有且仅有一个实例存在。最常见的一个应用场景就是网站访问量的计数器,试想如果允许创建多个实例,那还怎么计数,这个时候就得创建有且仅有的一个实例了。如何防止程序创建多个实例呢?首先就是不能直接new。不能new那就是要将构造函数实例化,那怎么来创建实例呢?我们还是从代码着 阅读全文
posted @ 2016-09-09 00:07 OKevin 阅读(1898) 评论(0) 推荐(0) 编辑
摘要: 前面我们讲了三个工厂模式,都是万变不离其宗,利用工厂模式来实例化不同的对象,虽然可能会多写一些代码,但这会为程序系统带来更方便的扩展性和尽量小的修改。 我们来从头回顾一下为什么要用工厂模式,实现一个计算器的程序,初级程序员可能立马分分钟就能写出代码来,例如: 几乎是20行的代码就实现了需求,但“合适 阅读全文
posted @ 2016-09-07 23:53 OKevin 阅读(549) 评论(1) 推荐(1) 编辑
摘要: 这里又出现了一个抽象工厂模式,这个抽象工厂模式又是什么呢? 我们现在来模拟一个场景,现在用的是Mysql数据库,明天让你更换为Oracle数据库。此时,想想要做多少的改动。但我们如果用工厂模式,这会让你节省大量时间。 首先,我们用工厂方法模式来设计这个程序。 我们画出类的UML图。 IFactory 阅读全文
posted @ 2016-09-07 00:17 OKevin 阅读(5812) 评论(0) 推荐(1) 编辑
摘要: 今天在读《Java网络编程》这本书的第二章 流 时,看到书中有一个地方关于int强制转换为byte类型时应注意的地方。这个地方有点细节,不过就应该把这种细节把握住。 情况是这样的,讲到InputStream的抽象方法read时,说到read返回一个int型,但实际是一个byte型的数据。这点从API 阅读全文
posted @ 2016-09-05 23:50 OKevin 阅读(58084) 评论(2) 推荐(1) 编辑
摘要: 工厂方法模式,咋一看在这个计算器程序里好像反而使程序变得更加“复制”,确实代码量好像是增加了,到底有什么好处呢?我想多领会领会,必然有它存在的理由。 我们先来看看“简单工厂模式”和“工厂方法模式”的类继承关系。上篇提到的“简单工厂模式”的类继承关系如下图所示: “工厂方法模式”的类继承关系如下图所示 阅读全文
posted @ 2016-09-05 23:33 OKevin 阅读(652) 评论(0) 推荐(0) 编辑
摘要: 工厂模式分三类:简单工厂模式、工厂方法模式、抽象工厂模式。 首先介绍比较简单一种工厂模式——简单工厂模式。 我们以计算器作为一个例子来说明工厂模式到底是什么。作为一个几年前大一从C语言起步的初级程序员,到现在写代码的思维还是停留在结构化编程,虽然Java学了有几年了,总是说面向对象面向对象。但是让实 阅读全文
posted @ 2016-09-04 23:29 OKevin 阅读(1030) 评论(1) 推荐(2) 编辑
摘要: 什么是协作型过滤?也就是根据你的历史喜好,再根据其他人和你类似的喜好,来向你推荐你未曾接触过的物品。实际上前面两章的内容就是协作型过滤的基本算法。 协作型过滤有两大分支: 一:基于用户的协作型过滤。顾名思义也就是根据你的历史喜好,找到其他和你相似的人,再从其他人的喜好列表中向你推荐你可能会喜... 阅读全文
posted @ 2015-05-21 20:18 OKevin 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 上一篇中介绍了四个算法,并用四个算法分别计算了两个人的相似度。这篇就来讲讲相似性算法在实际当中怎么用。第一:将指定的人与其他人作相似性比较,并从高到低进行排序;第二:对指定的人推荐未看过的电影。同样还是先给出具体分析,然后给出相应算法,再最后一起给出代码。 根据相似性从高到底排序。def to... 阅读全文
posted @ 2015-05-18 13:00 OKevin 阅读(2341) 评论(0) 推荐(0) 编辑