- 浏览: 461335 次
- 性别:
- 来自: 北京
最新评论
-
lm818:
最近一直在看设计模式,发现写的那本研磨真的不错,容易理解,能看 ...
大讨论:学习和应用设计模式的经验、教训、疑问等 -
yjfnwxf:
看了楼主博文,真为自己汗颜呀。。。。努力,再努力
研磨设计模式之命令模式-5 -
fengdandanweikang:
...
研磨设计模式 之 观察者模式(Observer) 1——跟着cc学设计系列 -
tiansong163:
你好,对《研磨设计模式》中UML有一个图标不知道是什么意思?希 ...
跟着cc学设计 之 研磨设计模式 目录汇总贴 -
soualliron:
国人就会溜须拍马,文章冠题“大讨论”,下面全是附会之音,无切实 ...
大讨论:学习和应用设计模式的经验、教训、疑问等
《研磨设计模式》一书的源代码已经整理好了,现提供各位朋友下载。
源代码的说明:
1:本源代码是《研磨设计模式》一书的配套源代码
2:每个模式的示例源代码放在一个单独的文件夹下,以该模式的英文名称命名
3:每个模式下分成多个example,按照书的示例顺序分别命名为example1、example2......以此类推
4:每个模式的示例基本上都是完整的,您可以参考和任意使用
5:基本上每个example里面都有Client文件,可以对本example进行测试
比如使用Builder模式来构建保险合同对象的示例代码:
(1)保险合同的对象的示例代码如下:
package cn.javass.dp.builder.example5; /** * 保险合同的对象 */ public class InsuranceContract { /** * 保险合同编号 */ private String contractId; /** * 被保险人员的名称,同一份保险合同,要么跟人员签订,要么跟公司签订, * 也就是说,"被保险人员"和"被保险公司"这两个属性,不可能同时有值 */ private String personName; /** * 被保险公司的名称 */ private String companyName; /** * 保险开始生效的日期 */ private long beginDate; /** * 保险失效的日期,一定会大于保险开始生效的日期 */ private long endDate; /** * 示例:其它数据 */ private String otherData; /** * 构造方法,访问级别是同包能访问 */ InsuranceContract(ConcreteBuilder builder){ this.contractId = builder.getContractId(); this.personName = builder.getPersonName(); this.companyName = builder.getCompanyName(); this.beginDate = builder.getBeginDate(); this.endDate = builder.getEndDate(); this.otherData = builder.getOtherData(); } /** * 示意:保险合同的某些操作 */ public void someOperation(){ System.out.println("Now in Insurance Contract someOperation=="+this.contractId); } }
(2)构造保险合同对象的构建器的示例代码
package cn.javass.dp.builder.example5; /** * 构造保险合同对象的构建器 */ public class ConcreteBuilder { private String contractId; private String personName; private String companyName; private long beginDate; private long endDate; private String otherData; /** * 构造方法,传入必须要有的参数 * @param contractId 保险合同编号 * @param beginDate 保险开始生效的日期 * @param endDate 保险失效的日期 */ public ConcreteBuilder(String contractId,long beginDate,long endDate){ this.contractId = contractId; this.beginDate = beginDate; this.endDate = endDate; } /** * 选填数据,被保险人员的名称 * @param personName 被保险人员的名称 * @return 构建器对象 */ public ConcreteBuilder setPersonName(String personName){ this.personName = personName; return this; } /** * 选填数据,被保险公司的名称 * @param companyName 被保险公司的名称 * @return 构建器对象 */ public ConcreteBuilder setCompanyName(String companyName){ this.companyName = companyName; return this; } /** * 选填数据,其它数据 * @param otherData 其它数据 * @return 构建器对象 */ public ConcreteBuilder setOtherData(String otherData){ this.otherData = otherData; return this; } /** * 构建真正的对象并返回 * @return 构建的保险合同的对象 */ public InsuranceContract build(){ if(contractId==null || contractId.trim().length()==0){ throw new IllegalArgumentException("合同编号不能为空"); } boolean signPerson = personName!=null && personName.trim().length()>0; boolean signCompany = companyName!=null && companyName.trim().length()>0; if(signPerson && signCompany){ throw new IllegalArgumentException("一份保险合同不能同时与人和公司签订"); } if(signPerson==false && signCompany==false){ throw new IllegalArgumentException("一份保险合同不能没有签订对象"); } if(beginDate<=0){ throw new IllegalArgumentException("合同必须有保险开始生效的日期"); } if(endDate<=0){ throw new IllegalArgumentException("合同必须有保险失效的日期"); } if(endDate<=beginDate){ throw new IllegalArgumentException("保险失效的日期必须大于保险生效日期"); } return new InsuranceContract(this); } public String getContractId() { return contractId; } public String getPersonName() { return personName; } public String getCompanyName() { return companyName; } public long getBeginDate() { return beginDate; } public long getEndDate() { return endDate; } public String getOtherData() { return otherData; } }
(3)测试用的Client代码:
package cn.javass.dp.builder.example5; public class Client { public static void main(String[] args) { //创建构建器 ConcreteBuilder builder = new ConcreteBuilder("001",12345L,67890L); //设置需要的数据,然后构建保险合同对象 InsuranceContract contract = builder.setPersonName("张三").setOtherData("test").build(); //操作保险合同对象的方法 contract.someOperation(); } }
谢谢大家捧场!
- 研磨设计模式-配套源代码.rar (402 KB)
- 下载次数: 700
评论
2 楼
Kevin_lujun
2011-02-22
其实跳出来看看,也没什么,总有些无聊的人。
也许他们这样可以获得某些心理上的快感吧。
也许他们这样可以获得某些心理上的快感吧。
1 楼
bbqook
2011-02-14
多谢楼主!竟然有人踩,什么心态啊?
发表评论
-
私塾在线推出《一案贯通GoF设计模式》项目实战
2012-10-19 22:12 20《研磨设计模式》出版以来,包括iteye上的朋友,很多人 ... -
研磨设计模式 之 组合模式(Composite) 3——跟着cc学设计系列
2012-08-22 08:50 415215.3 模式讲解 15.3.1 认识组合模式 ... -
研磨设计模式 之 组合模式(Composite) 2——跟着cc学设计系列
2012-08-20 13:53 330315.2 解决方案 15.2.1 组合模式来解决 ... -
研磨设计模式 之 组合模式(Composite) 1——跟着cc学设计系列
2012-08-20 12:17 302015.1 场景问题 15.1.1 商品类别树 ... -
研磨设计模式 之 迭代器模式(Iterator)3——跟着cc学设计系列
2012-08-19 07:07 368014.3 模式讲解 14.3.1 ... -
研磨设计模式 之 迭代器模式(Iterator)2——跟着cc学设计系列
2012-08-18 03:48 255614.2 解决方案 14.2.1 ... -
研磨设计模式 之 迭代器模式(Iterator)2——跟着cc学设计系列
2012-08-17 18:26 10614.2 解决方案 14.2.1 ... -
研磨设计模式 之 迭代器模式(Iterator)1——跟着cc学设计系列
2012-08-17 10:38 195914.1 场景问题 14.1.1 ... -
私塾在线《研磨设计模式》,精品课程上线特大惊喜
2012-08-17 10:03 5945《研磨设计模式》——跟着CC学设计,视频课程在 私塾在线 ... -
研磨设计模式 之 观察者模式(Observer) 3——跟着cc学设计系列
2012-08-16 08:51 290312.3 模式讲解 12.3.1 认识观察者模式 ... -
研磨设计模式 之 观察者模式(Observer) 2——跟着cc学设计系列
2012-08-15 07:03 277712.2 解决方案 12.2 ... -
研磨设计模式 之 观察者模式(Observer) 1——跟着cc学设计系列
2012-08-15 07:03 206212.1 场景问题 12.1.1 订阅报纸的过程 ... -
跟着cc学设计系列 之 研磨设计模式 目录汇总贴
2012-08-14 14:49 36研磨设计模式 的 前言 ——跟着cc学 ... -
研磨设计模式 之 代理模式(Proxy)3——跟着cc学设计系列
2012-08-14 14:36 222411.3 模式讲解 11.3.1 认识代理模式 ... -
研磨设计模式 之 代理模式(Proxy)2——跟着cc学设计系列
2012-08-13 12:36 277011.2 解决方案 11.2.1 代理模式来解 ... -
研磨设计模式 之 代理模式(Proxy)1——跟着cc学设计系列
2012-08-13 12:35 207411.1 场景问题 11.1.1 访问多条数据 ... -
研磨设计模式 之 中介者模式(Mediator)3 ——跟着cc学设计系列
2012-08-11 11:50 117210.3 模式讲解 10.3.1 认识中介者模式 ... -
研磨设计模式 之 中介者模式(Mediator)2 ——跟着cc学设计系列
2012-08-09 08:23 137210.2 解决方案 10.2.1 中介者模式来 ... -
研磨设计模式 之 中介者模式(Mediator)1 ——跟着cc学设计系列
2012-08-09 08:23 142510.1 场景问题 10.1.1 ... -
研磨设计模式 之 原型模式(Prototype)3 ——跟着cc学设计系列
2012-08-08 08:14 15139.3 模式讲解 9.3.1 ...
相关推荐
1:本源代码是《研磨设计模式》一书的配套源代码 2:每个模式的示例源代码放在一个单独的文件夹下,以该模式的英文名称命名 3:每个模式下分成多个example,按照书的示例顺序分别命名为example1、example2.........
研磨设计模式全部源代码,个人收集,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
研磨设计模式-配套源代码研磨设计模式-配套源代码
研磨设计模式-配套源代码.7z
研磨设计模式-配套源代码.rar
研磨设计模式第二版-配套源代码 UTF-8格式 研磨设计模式第二版-配套源代码 UTF-8格式
研磨设计模式 源代码 书上面的例子都在里面
研磨设计模式的配套源码,请下载,不要想了,解压后,直接放到eclipse下面即可运行!
包括设计模式,全部的实例讲解分析,通俗易懂
《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...
1:本源代码是《研磨设计模式》一书的配套源代码 2:每个模式的示例源代码放在一个单独的文件夹下,以该模式的英文名称命名 3:每个模式下分成多个example,按照书的示例顺序分别命名为example1、example2.........
《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...
《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...
研磨设计模式PDF
《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...
“1.1 设计模式是什么 1.1.1 什么是模式 从字面上理解,模,就是模型、模板的意思;式,就是方式、方法的意思。综合起来,所谓模式就是:可以作为模型或模板的方式或方法。... “研磨设计模式”。 iBooks.
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;...
内容概述:本视频课程是北京Java私塾原创精品书籍《研磨设计模式》一书的配套学习视频,由《研磨设计模式》的第一作者CC录制 课程目标:全面、系统的掌握GoF设计模式的知识,达到可以在实际项目开发中运用的能力 ...
内容概述:本视频课程是北京Java私塾原创精品书籍《研磨设计模式》一书的配套学习视频,由《研磨设计模式》的第一作者CC录制 课程目标:全面、系统的掌握GoF设计模式的知识,达到可以在实际项目开发中运用的能力 ...
研磨设计模式《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地...