- 浏览: 464631 次
- 性别:
- 来自: 北京
最新评论
-
lm818:
最近一直在看设计模式,发现写的那本研磨真的不错,容易理解,能看 ...
大讨论:学习和应用设计模式的经验、教训、疑问等 -
yjfnwxf:
看了楼主博文,真为自己汗颜呀。。。。努力,再努力
研磨设计模式之命令模式-5 -
fengdandanweikang:
...
研磨设计模式 之 观察者模式(Observer) 1——跟着cc学设计系列 -
tiansong163:
你好,对《研磨设计模式》中UML有一个图标不知道是什么意思?希 ...
跟着cc学设计 之 研磨设计模式 目录汇总贴 -
soualliron:
国人就会溜须拍马,文章冠题“大讨论”,下面全是附会之音,无切实 ...
大讨论:学习和应用设计模式的经验、教训、疑问等
文章列表
好消息,收到样书了,编辑说下周应该就可以进到书店了。
拍个照片,先睹为快:
再来一张:
有些厚,近800页,印刷质量还可以,双色也比较醒目和清晰。
拍的水平太差,呵呵,凑合着看看吧,远远没有看书那么醒目,更没有哪个质感了.
再来另外一边的
3 模式讲解
3.1 典型疑问
首先来解决一个常见的疑问:可能有朋友会认为,上面示例中的简单工厂看起来不就是把客户端里面的“new Impl()”移动到简单工厂里面吗?不还是一样通过new一个实现类来得到接口吗?把“new Impl()”这句话放到客户端和放到简单工厂里面有什么不同吗? 理解这个问题的重点就在于理解简单工厂所处的位置。 根据前面的学习,我们知道接口是用来封装隔离具体的实现的,目标就是不要让客户端知道封装体内部的具体实现。简单工厂的位置是位于封装体内的,也就是简单工厂是跟接口和具体的实现在一起的,算是封装体内部的一个类,所以简单 ...
2 解决方案
1 简单工厂来解决
用来解决上述问题的一个合理的解决方案就是简单工厂,那么什么是简单工厂呢?1:简单工厂定义
2:应用简单工厂来解决的思路 分析上面的问题,虽然不能让模块外部知道模块内的具体实现,但是模块内部是可以知道实现类的,而且创建接口是需要具体实现类的。 那么干脆在模块内部新建一个类,在这个类里面来创建接口,然后把创建好的接口返回给客户端,这样外部应用就只需要根据这个类来获取相应的接口对象,然后就可以操作接口定义的方法了。把这样的对象称为简单工厂,就叫Factory吧。 这样一来,客户端就可以通过这个Fa ...
3 小时前
JavaEye管理员 发给 我 的消息
正文:
chjavach,你好!发表到JavaEye博客频道首页的文章应该是原创性质的、言之有物的文章,并且不允许您发布广告性质、软文性质、提问性质或者具有攻击性质的文章到博客频道首页。您的博客文章'研磨设计模式之简单工厂模式-1'不符合该发布条件,从博客频道首页撤出。在15天之内,您的博客文章将无法在博客频道首页发表。
这是3小时前收到的JavaEye管理员 发给 我 的消息
3 小时前
JavaEye管理员 发给 我 的消息
“
chjavach,你好!发表到JavaEye博客频道首 ...
继续研磨设计模式,来个简单的
简单工厂
简单工厂不是一个标准的设计模式,但是它实在是太常用了,简单而又神奇,所以还是需要好好掌握的,就当是对学习设计模式的热身运动吧。 为了保持一致性,我们尽量按照学习其它模式的步骤来进行学习。
1 场景问题
大家都知道,在Java应用开发中,要“面向接口编程”。 那么什么是接口?接口有什么作用?接口如何使用?一起来回顾一下:
1.1 接口回顾
(1)Java中接口的概念 在Java中接口是一种特殊的抽象类,跟一般的抽象类相比,接口里面的所有方法都是抽象方 ...
今天收到编辑发过来的最终图书封面,很开心,拿出来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%88%E8%87%A3/dp/B004G8P90S/ref=sr_1_1?ie=UTF8&qid=1295358211&sr=8-1
也可以直接在卓越网上搜索《研磨设计模式》
...
继续模式之旅,来个简单点的
抽象工厂模式(Abstract Factory)
1.1 场景问题
1.1.1 选择组装电脑的配件
举个生活中常见的例子——组装电脑,我们在组装电脑的时候,通常需要选择一系列的配件,比如:CPU、硬盘、内存、主板、电源、机箱等等。为了使讨论简单点,只考虑选择CPU和主板的问题。 事实上,我们在选择CPU的时候,面临一系列的问题,比如:品牌、型号、针脚数目、主频等问题,只有把这些都确定下来,才能确定具体的CPU。 同样,在选择主板的时候,也有一系列的问题,比如:品牌、芯片组、 ...
3.3 装饰模式和AOP
装饰模式和AOP在思想上有共同之处。可能有些朋友还不太了解AOP,下面先简单介绍一下AOP的基础知识。1:什么是AOP——面向方面编程 AOP是一种编程范式,提供从另一个角度来考虑程序结构以完善面向对象编程(OOP)。 在面向对象开发中,考虑系统的角度通常是纵向的,比如我们经常画出的如下的系统架构图,默认都是从上到下,上层依赖于下层,如图5所示: 图5 系统架构图示例图 而在每个模块内部呢?就拿大家都熟悉的三层架构来说,也是从 ...
3 模式讲解
3.1 认识装饰模式
(1)模式功能 装饰模式能够实现动态的为对象添加功能,是从一个对象外部来给对象增加功能,相当于是改变了对象的外观。当装饰过后,从外部使用系统的角度看,就不再是使用原始的那个对象了,而是使用被一系列的装饰器装饰过后的对象。 这样就能够灵活的改变一个对象的功能,只要动态组合的装饰器发生了改变,那么最终所得到的对象的功能也就发生了改变。 变相的还得到了另外一个好处,那就是装饰器功能的复用,可以给一个对象多次增加同一个装饰器,也可以用同一个装饰器装饰不同的对象。
(2)对象组合 前面已经讲到了 ...
2 解决方案
2.1 装饰模式来解决
用来解决上述问题的一个合理的解决方案,就是使用装饰模式。那么什么是装饰模式呢?(1)装饰模式定义
(2)应用装饰模式来解决的思路 虽然经过简化,业务简单 ...
装饰模式(Decorator)
1 场景问题
1.1 复杂的奖金计算
考虑这样一个实际应用:就是如何实现灵活的奖金计算。 奖金计算是相对复杂的功能,尤其是对于业务部门的奖金计算方式,是非常复杂的,除了业务功能复杂外,另外一个麻烦之处是计算方式还经常需要变动,因为业务部门经常通过调整奖金的计算方式来激励士气。 先从业务上看看现有的奖金计算方式的复杂性:
首先是奖金分类:对于个人,大致有个人当月业务奖金、个人累计奖金、个人业务增长奖金、及时回款奖金、限时成交加码奖金等等;
对于业务主管或者是业务经理,除了个人奖金外,还有 ...
大讨论:学习和应用设计模式的经验、教训、疑问等
在JavaEye发设计模式方面的文章也2个月了,获得了很多朋友的关爱和支持。这也说明了很多朋友对设计模式是很感兴趣的。
当然大家 ...
3.4 广义桥接-Java中无处不桥接
使用Java编写程序,一个很重要的原则就是“面向接口编程”,说得准确点应该是“面向抽象编程”,由于在Java开发中,更多的使用接口而非抽象类,因此通常就说成“面向接口编程” ...
3 模式讲解
3.1 认识桥接模式
(1)什么是桥接 在桥接模式里面,不太好理解的就是桥接的概念,什么是桥接?为何需要桥接?如何桥接?把这些问题搞清楚了,也就基本明白桥接的含义了。 一个一个来,先看什么是桥接?所谓桥接,通俗点说就是在不同的东西之间搭一个桥,让他们能够连接起来,可以相互通讯和使用。那么在桥接模式中到底是给什么东西来搭桥呢?就是为被分离了的抽象部分和实现部分来搭桥,比如前面示例中抽象的消息和具体消息发送之间搭个桥。 但是这里要注意一个问题:在桥接模式中的桥接是单向的,也就是只能是抽象部分的对象去使用具体实现部分的对象,而不 ...
2 解决方案
2.1 桥接模式来解决
用来解决上述问题的一个合理的解决方案,就是使用桥接模式。那么什么是桥接模式呢?
(1)桥接模式定义 将抽象部分与它的实现部分分离,使它们都可以独立地变 ...