首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

研磨设计形式 配套源代码发放

2012-09-01 
研磨设计模式 配套源代码发放《研磨设计模式》一书的源代码已经整理好了,现提供各位朋友下载。?源代码的说明:

研磨设计模式 配套源代码发放

《研磨设计模式》一书的源代码已经整理好了,现提供各位朋友下载。

?

源代码的说明:

1:本源代码是《研磨设计模式》一书的配套源代码
2:每个模式的示例源代码放在一个单独的文件夹下,以该模式的英文名称命名
3:每个模式下分成多个example,按照书的示例顺序分别命名为example1、example2......以此类推
4:每个模式的示例基本上都是完整的,您可以参考和任意使用
5:基本上每个example里面都有Client文件,可以对本example进行测试

?

?

另外:

???? 上一个q群已满,有需要的朋友可以加入到研磨设计模式群二,号码是:138592772

?

?

?

比如使用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();}}

?

?

?

?

?谢谢大家捧场!?

?

1 楼 bbqook 2011-02-14   多谢楼主!竟然有人踩,什么心态啊? 2 楼 Kevin_lujun 2011-02-22   其实跳出来看看,也没什么,总有些无聊的人。
也许他们这样可以获得某些心理上的快感吧。

热点排行