- 博客(67)
- 收藏
- 关注
研磨设计模式 之 组合模式(Composite) 3——跟着cc学设计系列
15.3 模式讲解15.3.1 认识组合模式(1)组合模式的目的组合模式的目的是:让客户端不再区分操作的是组合对象还是叶子对象,而是以一个统一的方式来操作。实现这个目标的关键之处,是设计一个抽象的组件类,让它可以代表组合对象和叶子对象。这样一来,客户端就不用区分到底是组合对象还是叶子对象了,只需要全部当成组件对象进行统一的操作就可以了。(2)对象树通常,组合模式会...
2012-08-22 08:50:15 284
研磨设计模式 之 组合模式(Composite) 2——跟着cc学设计系列
15.2 解决方案15.2.1 组合模式来解决用来解决上述问题的一个合理的解决方案就是组合模式。那么什么是组合模式呢?(1)组合模式定义 (2)应用组合模式来解决的思路 仔细分析上面不用模式的例子中,要区分组合对象和叶子对象的根本原因,就在于没有把组合对象和叶子对象统一起来,也就是说,组合对象类型和叶子对象类型是完全不同的类型,这导致了操作的时候必须区...
2012-08-20 13:53:19 335
研磨设计模式 之 组合模式(Composite) 1——跟着cc学设计系列
15.1 场景问题15.1.1 商品类别树 考虑这样一个实际的应用:管理商品类别树。在实现跟商品有关的应用系统的时候,一个很常见的功能就是商品类别树的管理,比如有如下所示的商品类别树:+服装+男装 -衬衣 -夹克 ...
2012-08-20 12:17:50 231
研磨设计模式 之 迭代器模式(Iterator)3——跟着cc学设计系列
14.3 模式讲解14.3.1 认识迭代器模式(1)迭代器模式的功能迭代器模式的功能主要在于提供对聚合对象的迭代访问。迭代器就围绕着这个“访问”做文章,延伸出很多的功能来。比如:以不同的方式遍历聚合对象,比如向前、向后等对同一个聚合同时进行多个遍历以不同的遍历策略来遍历聚合,比如是否需要过滤等多态迭代,含义是:为不同的聚合结构,提供统一的迭代接口,也就是说通...
2012-08-19 07:07:07 200
研磨设计模式 之 迭代器模式(Iterator)2——跟着cc学设计系列
14.2 解决方案14.2.1 迭代器模式来解决用来解决上述问题的一个合理的解决方案就是迭代器模式。那么什么是迭代器模式呢?(1)迭代器模式定义 所谓聚合是:指一组对象的组合结构,比如:Java中的集合、数组等。(2)应用迭代器模式来解决的思路 仔细分析上面的问题,要以一个统一的方式来访问内部实现不同的聚合对象,那么首先就需要把这个统一的访问方式...
2012-08-18 03:48:51 182
研磨设计模式 之 迭代器模式(Iterator)1——跟着cc学设计系列
14.1 场景问题14.1.1 工资表数据的整合 考虑这样一个实际应用:整合工资表数据。 这个项目的背景是这样的,项目的客户方收购了一家小公司,这家小公司有自己的工资系统,现在需要整合到客户方已有的工资系统上。 客户方已有的工资系统,在内部是采用的List来记录工资列表;而新收购的这家公司的工资系统,在内部是采用的数组来记录工资列表;但...
2012-08-17 10:38:57 172
原创 私塾在线《研磨设计模式》,精品课程上线特大惊喜
《研磨设计模式》——跟着CC学设计,视频课程在 私塾在线 上线啦! 想学习设计模式的朋友可以前去看看。 本视频课程是北京Java私塾原创精品书籍《研磨设计模式》一书的配套学习视频,由《研磨设计模式》的第一作者CC录制 软件开发越来越复杂,对软件设计的要求也越来越高,而软件设计和架构的入门功夫就是深入理解和掌握设计模式,因此,计模式的重要性不言而喻。 很多朋友也...
2012-08-17 10:03:11 465
原创 跟着cc学设计 之 研磨设计模式 目录汇总贴
研磨设计模式 的 前言 ——跟着cc学设计系列 《研磨设计模式》 配套源代码 ——跟着cc学设计系列 研磨设计模式之工厂方法模式-1 ——跟着cc学设计系列 研磨设计模式之工厂方法模式-2 ——跟着cc学设计系列 研磨设计模式之工厂方法模式-3 ——跟着cc学设计系列 研磨设计模式之工厂方法模式-4 ——跟着cc学设计系列 研磨设计模式之工厂方法模式-5 ——跟着c...
2012-08-16 09:19:20 191
研磨设计模式 之 观察者模式(Observer) 3——跟着cc学设计系列
12.3 模式讲解12.3.1 认识观察者模式(1)目标和观察者之间的关系 按照模式的定义,目标和观察者之间是典型的一对多的关系。 但是要注意,如果观察者只有一个,也是可以的,这样就变相实现了目标和观察者之间一对一的关系,这也使得在处理一个对象的状态变化会影响到另一个对象的时候,也可以考虑使用观察者模式。 同样的,一个观察者也可以观...
2012-08-16 08:51:16 530
研磨设计模式 之 观察者模式(Observer) 2——跟着cc学设计系列
12.2 解决方案12.2.1 观察者模式来解决用来解决上述问题的一个合理的解决方案就是观察者模式。那么什么是观察者模式呢?(1)观察者模式定义 (2)应用观察者模式来解决的思路在前面描述的订阅报纸的例子里面,对于报社来说,在一开始,它并不清楚究竟有多少个订阅者会来订阅报纸,因此,报社需要维护一个订阅者的列表,这样当报社出版报纸的时候,才能够把报纸发放到所有...
2012-08-15 07:03:30 113
研磨设计模式 之 观察者模式(Observer) 1——跟着cc学设计系列
12.1 场景问题12.1.1 订阅报纸的过程来考虑实际生活中订阅报纸的过程,这里简单总结了一下,订阅报纸的基本流程如下:首先按照自己的需要选择合适的报纸,具体的报刊杂志目录可以从邮局获取。选择好后,就到邮局去填写订阅单,同时交上所需的费用。至此,就完成了报纸的订阅过程,接下去的就是耐心等候,报社会按照出报时间推出报纸,然后报纸会被送到每个订阅人的手里。 ...
2012-08-15 07:03:01 144
研磨设计模式 之 代理模式(Proxy)3——跟着cc学设计系列
11.3 模式讲解11.3.1 认识代理模式(1)代理模式的功能代理模式是通过创建一个代理对象,用这个代理对象去代表真实的对象,客户端得到这个代理对象过后,对客户端没有什么影响,就跟得到了真实对象一样来使用。 当客户端操作这个代理对象的时候,实际上功能最终还是会由真实的对象来完成,只不过是通过代理操作的,也就是客户端操作代理,代理操作真正的对象。 ...
2012-08-14 14:36:52 113
研磨设计模式 之 代理模式(Proxy)2——跟着cc学设计系列
11.2 解决方案11.2.1 代理模式来解决用来解决上述问题的一个合理的解决方案就是代理模式。那么什么是代理模式呢?(1)代理模式定义 (2)应用代理模式来解决的思路仔细分析上面的问题,一次性访问多条数据,这个可能性是很难避免的,是客户的需要。也就是说,要想节省内存,就不能从减少数据条数入手了,那就只能从减少每条数据的数据量上来考虑。一个基本的思路如下...
2012-08-13 12:36:00 141
研磨设计模式 之 代理模式(Proxy)1——跟着cc学设计系列
11.1 场景问题11.1.1 访问多条数据 考虑这样一个实际应用:要一次性访问多条数据。 这个功能的背景是这样的;在一个HR(人力资源)应用项目中客户提出,当选择一个部门或是分公司的时候,要把这个部门或者分公司下的所有员工都显示出来,而且不要翻页,好方便他们进行业务处理。在显示全部员工的时候,只需要显示名称即可,但是也需要提供如下的功能:在必要的时候...
2012-08-13 12:35:25 155
研磨设计模式 之 中介者模式(Mediator)3 ——跟着cc学设计系列
10.3 模式讲解10.3.1 认识中介者模式(1)模式的功能中介者的功能非常简单,就是封装对象之间的交互。如果一个对象的操作会引起其它相关对象的变化,或者是某个操作需要引起其它对象的后续或连带操作,而这个对象又不希望自己来处理这些关系,那么就可以找中介者,把所有的麻烦扔给它,只在需要的时候通知中介者,其它的就让中介者去处理就可以了。 反过来,其它的对象在操作...
2012-08-11 11:50:07 126
研磨设计模式 之 中介者模式(Mediator)2 ——跟着cc学设计系列
10.2 解决方案10.2.1 中介者模式来解决用来解决上述问题的一个合理的解决方案就是中介者模式。那么什么是中介者模式呢?(1)中介者模式定义 (2)应用中介者模式来解决的思路仔细分析上面的问题,根本原因就在于多个对象需要相互交互,从而导致对象之间紧密耦合,这就不利于对象的修改和维护。中介者模式的解决思路很简单,跟电脑的例子一样,中介者模式通过引入一个...
2012-08-09 08:23:50 188
研磨设计模式 之 中介者模式(Mediator)1 ——跟着cc学设计系列
10.1 场景问题10.1.1 如果没有主板大家都知道,电脑里面各个配件之间的交互,主要是通过主板来完成的(事实上主板有很多的功能,这里不去讨论)。试想一下,如果电脑里面没有主板,会怎样呢?如果电脑里面没有了主板,那么各个配件之间就必须自行相互交互,以互相传送数据,理论上说,基本上各个配件相互之间都存在交互数据的可能。如图10.1所示: 图10.1 没有主板,各个配...
2012-08-09 08:23:03 193
研磨设计模式 之 原型模式(Prototype)3 ——跟着cc学设计系列
9.3 模式讲解9.3.1 认识原型模式(1)原型模式的功能原型模式的功能实际上包含两个方面:一个是通过克隆来创建新的对象实例另一个是为克隆出来的新的对象实例复制原型实例属性的值原型模式要实现的主要功能就是:通过克隆来创建新的对象实例。一般来讲,新创建出来的实例的数据是和原型实例一样的。但是具体如何实现克隆,需要由程序自行实现,原型模式并没有统一的要求...
2012-08-08 08:14:55 223
研磨设计模式 之 原型模式(Prototype)2 ——跟着cc学设计系列
9.2 解决方案9.2.1 原型模式来解决用来解决上述问题的一个合理的解决方案就是原型模式。那么什么是原型模式呢?(1)原型模式定义 (2)应用原型模式来解决的思路仔细分析上面的问题,在saveOrder方法里面,已经有了订单接口类型的对象实例,是从外部传入的,但是这里只是知道这个实例对象的种类是订单的接口类型,并不知道其具...
2012-08-07 17:54:48 146
研磨设计模式 之 原型模式(Prototype)1 ——跟着cc学设计系列
9.1 场景问题9.1.1 订单处理系统考虑这样一个实际应用:订单处理系统。现在有一个订单处理的系统,里面有个保存订单的业务功能,在这个业务功能里面,客户有这么一个需求:每当订单的预定产品数量超过1000的时候,就需要把订单拆成两份订单来保存,如果拆成两份订单后,还是超过1000,那就继续拆分,直到每份订单的预定产品数量不超过1000。至于为什么要拆分,原因是好进行订...
2012-08-07 17:54:29 192
跟着cc学设计 之 研磨设计模式 目录汇总贴
研磨设计模式 的 前言 ——跟着cc学设计系列 《研磨设计模式》 配套源代码 ——跟着cc学设计系列 研磨设计模式之工厂方法模式-1 ——跟着cc学设计系列 研磨设计模式之工厂方法模式-2 ——跟着cc学设计系列 研磨设计模式之工厂方法模式-3 ——跟着cc学设计系列 研磨设计模式之工厂方法模式-4 ——跟着cc学设计系列 研磨设计模式之工厂方法模式-5 ——跟着c...
2012-08-07 17:40:36 134
研磨设计模式 之 生成器模式(Builder)3 ——跟着cc学设计系列
8.3 模式讲解8.3.1 认识生成器模式(1)生成器模式的功能生成器模式的主要功能是构建复杂的产品,而且是细化的,分步骤的构建产品,也就是生成器模式重在解决一步一步构造复杂对象的问题。如果光是这么认识生成器模式的功能是不够的。更为重要的是,这个构建的过程是统一的,固定不变的,变化的部分放到生成器部分了,只要配置不同的生成器,那么同样的构建过程,就能构建出不同的产品表示来...
2012-08-03 11:26:40 128
研磨设计模式 之 生成器模式(Builder)2 ——跟着cc学设计系列
8.2 解决方案8.2.1 生成器模式来解决用来解决上述问题的一个合理的解决方案就是生成器模式。那么什么是生成器模式呢?(1)生成器模式定义 (2)应用生成器模式来解决的思路 仔细分析上面的实现,构建每种格式的数据文件的处理过程,这不就是构建过程吗?而每种格式具体的步骤实现,不就相当于是不同的表示吗?因为不同的步骤实现,决定了最终的表现也就不同。也就是...
2012-08-03 11:26:15 137
研磨设计模式 之 生成器模式(Builder)1 ——跟着cc学设计系列
8.1 场景问题8.1.1 继续导出数据的应用框架在讨论工厂方法模式的时候,提到了一个导出数据的应用框架。对于导出数据的应用框架,通常在导出数据上,会有一些约定的方式,比如导出成:文本格式、数据库备份形式、Excel格式、Xml格式等等。在工厂方法模式章节里面,讨论并使用工厂方法模式来解决了如何选择具体导出方式的问题,并没有涉及到每种方式具体如何实现。换句话说,在讨论...
2012-08-02 14:14:20 155
研磨Struts2 目录
私塾在线学习网原创学习教程 《研磨struts2》 第一章 Struts2概述 之 MVC模式《研磨struts2》 第一章 Struts2概述 之 Struts2基础《研磨struts2》 第一章 Struts2概述 之 Struts2和MVC《研磨struts2》 第二章 Struts2的HelloWorld 之 概述《研磨struts2》 第二章 Struts2...
2011-11-11 22:19:34 183
《研磨设计模式》 配套源代码
不知得罪了哪位朋友,盯着踩啊,提供个源代码而已,犯得着您老动用几十个马甲来死踩吗?看看您的那些马甲,注册时间都连着呢,访问时间也挨着呢!《研磨设计模式》一书的源代码已经整理好了,现提供各位朋友下载。 源代码的说明:1:本源代码是《研磨设计模式》一书的配套源代码2:每个模式的示例源代码放在一个单独的文件夹下,以该模式的英文名称命名3:每个模式下分成多个ex...
2011-02-14 17:21:08 347 2
研磨设计模式 配套源代码发放
《研磨设计模式》一书的源代码已经整理好了,现提供各位朋友下载。 源代码的说明:1:本源代码是《研磨设计模式》一书的配套源代码2:每个模式的示例源代码放在一个单独的文件夹下,以该模式的英文名称命名3:每个模式下分成多个example,按照书的示例顺序分别命名为example1、example2......以此类推4:每个模式的示例基本上都是完整的,您可以参考和任意使用5:基本上每个exa...
2011-02-14 09:26:13 264
原创 关于研磨设计模式一书的源代码
看到有朋友在问:“哪里可以下载到研磨设计模式一书的源代码?” 这个会尽快整理一下,然后在博客上提供下载,敬请关注,谢谢大家的支持! 有一个好消息与大家分享: 接编辑最新通知,《研磨设计模式》一书的版权已经输出到台湾,台湾的出版界朋友浏览过本博客,受到他们的超级好评! 另外,有热心的朋友为研磨设计模式一书建立了一个Q...
2011-01-06 17:38:49 311
研磨设计模式 的 前言
首先向各位长期支持我的朋友致以诚挚的感谢!《研磨设计模式》一书已经上市,具体的信息请参见上一篇博文,这里就不多说了,免得JE做出他们认为合理的举动。 研磨设计模式的前言,里面也有很多对大家有用的信息。 前言创作背景 软件开发越来越复杂,对软件设计的要求也越来越高,而软件设计和架构的入门功夫就是深入理解和掌握设计模式,因此,设计模式的重...
2010-12-20 15:15:59 118
研磨设计模式终于上市了
首先感谢大家长久以来的支持和鼓励,没有你们的大力帮助,是很难坚持走到今天的,因此,向你们致以诚挚的感谢! 另外有很多朋友在博客里面、QQ里面询问,到底什么时候能够看到书,这里集中公告一下: 目前书已经上市,网店和书店应该都有了,当然,远一点的地方,可能书店要上得慢一点,过几天应该就会有的。 《研磨设计模式》一书已经...
2010-12-17 12:07:48 90
研磨设计模式 样书 上照片
好消息,收到样书了,编辑说下周应该就可以进到书店了。 拍个照片,先睹为快: 再来一张: 有些厚,近800页,印刷质量还可以,双色也比较醒目和清晰。 拍的水平太差,呵呵,凑合着看看吧,远远没有看书那么醒目,更没有哪个质感了. 再来另外一边的 ...
2010-12-09 19:45:49 88
研磨设计模式之简单工厂模式-3
3 模式讲解3.1 典型疑问 首先来解决一个常见的疑问:可能有朋友会认为,上面示例中的简单工厂看起来不就是把客户端里面的“new Impl()”移动到简单工厂里面吗?不还是一样通过new一个实现类来得到接口吗?把“new Impl()”这句话放到客户端和放到简单工厂里面有什么不同吗? 理解这个问题的重点就在于理解简单工厂所处的位置。 根据前面...
2010-12-06 16:39:28 99
研磨设计模式之简单工厂模式-2
2 解决方案1 简单工厂来解决 用来解决上述问题的一个合理的解决方案就是简单工厂,那么什么是简单工厂呢?1:简单工厂定义 2:应用简单工厂来解决的思路 分析上面的问题,虽然不能让模块外部知道模块内的具体实现,但是模块内部是可以知道实现类的,而且创建接口是需要具体实现类的。 那么干脆在模块内部新建一个类,在这个类里面来创建接口,然后把创建好...
2010-11-18 15:43:06 75
博文从首页被撤下,15天内不能发布到首页
3 小时前JavaEye管理员 发给 我 的消息正文:chjavach,你好!发表到JavaEye博客频道首页的文章应该是原创性质的、言之有物的文章,并且不允许您发布广告性质、软文性质、提问性质或者具有攻击性质的文章到博客频道首页。您的博客文章'研磨设计模式之简单工厂模式-1'不符合该发布条件,从博客频道首页撤出。在15天之内,您的博客文章将无法在博客频道首页发表。...
2010-11-02 17:41:03 94
研磨设计模式之简单工厂模式-1
继续研磨设计模式,来个简单的 简单工厂 简单工厂不是一个标准的设计模式,但是它实在是太常用了,简单而又神奇,所以还是需要好好掌握的,就当是对学习设计模式的热身运动吧。 为了保持一致性,我们尽量按照学习其它模式的步骤来进行学习。1 场景问题 大家都知道,在Java应用开发中,要“面向接口编程”。 那么什么是接口?...
2010-11-02 10:17:18 102
研磨设计模式 封面show
今天收到编辑发过来的最终图书封面,很开心,拿出来show一下! 顺带做个广告,《研磨设计模式》 一书由 清华大学出版社 出版并发行,即将上市,敬请关注! 《研磨设计模式》一书已经上市,卓越网销售链接:http://www.amazon.cn/%E7%A0%94%E7%A3%A8%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E9%99%...
2010-10-29 22:13:48 94
研磨设计模式之抽象工厂模式-1
继续模式之旅,来个简单点的 抽象工厂模式(Abstract Factory)1.1 场景问题1.1.1 选择组装电脑的配件 举个生活中常见的例子——组装电脑,我们在组装电脑的时候,通常需要选择一系列的配件,比如:CPU、硬盘、内存、主板、电源、机箱等等。为了使讨论简单点,只考虑选择CPU和主板的问题。 事实上,我...
2010-10-25 10:05:08 124
研磨设计模式之装饰模式-4
3.3 装饰模式和AOP 装饰模式和AOP在思想上有共同之处。可能有些朋友还不太了解AOP,下面先简单介绍一下AOP的基础知识。1:什么是AOP——面向方面编程 AOP是一种编程范式,提供从另一个角度来考虑程序结构以完善面向对象编程(OOP)。 在面向对象开发中,考虑系统的角度通常是纵向的,比如我们经常画出的如下的系统架构图,默认都是从上到下,上层依...
2010-10-18 08:40:40 380
研磨设计模式之装饰模式-3
3 模式讲解3.1 认识装饰模式(1)模式功能 装饰模式能够实现动态的为对象添加功能,是从一个对象外部来给对象增加功能,相当于是改变了对象的外观。当装饰过后,从外部使用系统的角度看,就不再是使用原始的那个对象了,而是使用被一系列的装饰器装饰过后的对象。 这样就能够灵活的改变一个对象的功能,只要动态组合的装饰器发生了改变,那么最终所得到的对象的功能也...
2010-10-11 07:53:39 154
研磨设计模式之装饰模式-2
2 解决方案2.1 装饰模式来解决 用来解决上述问题的一个合理的解决方案,就是使用装饰模式。那么什么是装饰模式呢?(1)装饰模式定义 (2)应用装饰模式来解决的思路 虽然经过简化,业务简单了很多,但是需要解决的问题不会少,还是要解决:要透明的给一个对象增加功能,并实现功能的动态组合。 所谓透明的给一个对象增加功能,换句话说就是要给一个对象...
2010-09-27 08:18:16 123
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人