¡¶JAVAÓëģʽ¡·µÚ5Ìì¨D½¨Ôìģʽ (Æß)

2014-11-24 08:22:23 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 11
this.personName = personName;
return this;
}

// ±»±£ÏÕ¹«Ë¾µÄÃû³Æ
public ConcreteBuilder setCompanyName(String companyName) {
this.companyName = companyName;
return this;
}

// ÆäËûÊý¾Ý
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);
}
}
}
package com.bankht.Builder.contract;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-6-25 ÏÂÎç02:55:52
*
* @Àà˵Ã÷ £º±£ÏÕºÏͬÀà

*/
/**
* ±£ÏÕºÏͬ¶ÔÏó
*/
@SuppressWarnings("unused")
public class InsuranceContract {
// ±£ÏÕºÏͬ±àºÅ
private String contractId;
/**
* ±»±£ÏÕÈËÔ±µÄÃû³Æ£¬Í¬Ò»·Ý±£ÏÕºÏͬ£¬ÒªÃ´¸úÈËԱǩ¶©£¬ÒªÃ´¸ú¹«Ë¾Ç©¶©£¬
* Ò²¾ÍÊÇ˵£º¡°±»±£ÏÕÈËÔ±¡±ºÍ¡°±»±£ÏÕ¹«Ë¾¡±ÕâÁ½¸öÊôÐÔ£¬²»¿ÉÄÜͬʱÓÐÖµ
*/
private String personName;
// ±»±£ÏÕ¹«Ë¾µÄÃû³Æ
private String companyName;
// ±£ÏÕ¿ªÊ¼ÉúЧÈÕÆÚ
private long beginDate;
// ±£ÏÕʧЧÈÕÆÚ£¬Ò»¶¨»á´óÓÚ±£ÏÕ¿ªÊ¼ÉúЧÈÕÆÚ
private long endDate;
// ÆäËûÊý¾Ý
private String otherData;

// ˽Óй¹Ôì·½·¨
private InsuranceContract(ConcreteBuilder builder) {
this.contractId = builder.contractId;
this.personName = builder.personName;
this.companyName = builder.companyName;
this.beginDate = builder.beginDate;
this.endDate = builder.endDate;
this.otherData = builder.otherData;
}

/**
* ±£ÏÕºÏͬµÄһЩ²Ù×÷
*/
public void someOperation() {
boolean signPerson = (personName != null && personName.trim().length() > 0);
boolean signCompany = (companyName != null && companyName.trim().length() > 0);
System.out.println("µ±Ç°ÕýÔÚ²Ù×÷µÄ±£ÏÕºÏͬ±àºÅΪ¡¾" + this.contractId + "¡¿");
if (signPerson) {
System.out.println("±»±£ÏÕµÄΪ¸öÈË£¬¸öÈËÐÕÃû£º" + this.personName);
}
if (signCompany) {
System.out.println("±»±£ÏÕµÄΪ¹«Ë¾£¬¹«Ë¾Ãû³Æ£º" + this.companyName);
}
}

public static class ConcreteBuilder {
private String contractId;
private String personName;
private String companyName;
private long beginDate;
private long endDate;
private String otherData;

/**
* ¹¹Ôì·½·¨£¬´«Èë±ØÐëÒªÓеIJÎÊý
*
* @param contractId
* ±£ÏÕºÏͬ±àºÅ
* @param beginDate
* ±£ÏÕºÏͬ¿ªÊ¼ÉúЧÈÕÆÚ
* @param endDate
* ±£ÏÕºÏͬʧЧÈÕÆÚ
*/
public ConcreteBuilder(String contractId, long beginDate, long endDate) {
this.contractId = contractId;
this.beginDate = beginDate;