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

2014-11-24 08:22:23 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 16
dress@126.com
±êÌ⣺»¶ËͱêÌâ
ÄÚÈÝ£º»¶ËÍÄÚÈÝ
·¢ËÍÈÕÆÚ£ºMon Jun 25 14:49:29 CST 2012
·¢ËÍ»¶ËÍÐÅÏ¢
ÊÕ¼þÈ˵ØÖ·£ºtoAddress@126.com
·¢¼þÈ˵ØÖ·£ºfromAddress@126.com
±êÌ⣺»¶ËͱêÌâ
ÄÚÈÝ£º»¶ËÍÄÚÈÝ
·¢ËÍÈÕÆÚ£ºMon Jun 25 14:49:29 CST 2012

¡¡¡¡½¨Ôìģʽ·Ö³ÉÁ½¸öºÜÖØÒªµÄ²¿·Ö£º

¡¡¡¡1. Ò»¸ö²¿·ÖÊÇBuilder½Ó¿Ú£¬ÕâÀïÊǶ¨ÒåÁËÈçºÎ¹¹½¨¸÷¸ö²¿¼þ£¬Ò²¾ÍÊÇÖªµÀÿ¸ö²¿¼þ¹¦ÄÜÈçºÎʵÏÖ£¬ÒÔ¼°ÈçºÎ×°ÅäÕâЩ²¿¼þµ½²úÆ·ÖÐÈ¥£»

¡¡¡¡2. ÁíÍâÒ»¸ö²¿·ÖÊÇDirector£¬DirectorÊÇÖªµÀÈçºÎ×éºÏÀ´¹¹½¨²úÆ·£¬Ò²¾ÍÊÇ˵Director¸ºÔðÕûÌåµÄ¹¹½¨Ëã·¨£¬¶øÇÒͨ³£ÊÇ·Ö²½ÖèµØÀ´Ö´ÐС£

¡¡¡¡²»¹ÜÈçºÎ±ä»¯£¬½¨Ôìģʽ¶¼´æÔÚÕâôÁ½¸ö²¿·Ö£¬Ò»¸ö²¿·ÖÊDz¿¼þ¹¹ÔìºÍ²úÆ·×°Å䣬ÁíÒ»¸ö²¿·ÖÊÇÕûÌå¹¹½¨µÄËã·¨¡£ÈÏʶÕâµãÊǺÜÖØÒªµÄ£¬ÒòΪÔÚ½¨ÔìģʽÖУ¬Ç¿µ÷µÄÊǹ̶¨ÕûÌå¹¹½¨µÄËã·¨£¬¶øÁé»îÀ©Õ¹ºÍÇл»²¿¼þµÄ¾ßÌå¹¹ÔìºÍ²úÆ·×°ÅäµÄ·½Ê½¡£

¡¡¡¡ÔÙÖ±°×µã˵£¬½¨ÔìģʽµÄÖØÐÄÔÚÓÚ·ÖÀë¹¹½¨Ëã·¨ºÍ¾ßÌåµÄ¹¹ÔìʵÏÖ£¬´Ó¶øÊ¹µÃ¹¹½¨Ëã·¨¿ÉÒÔÖØÓ᣾ßÌåµÄ¹¹ÔìʵÏÖ¿ÉÒԺܷ½±ãµØÀ©Õ¹ºÍÇл»£¬´Ó¶ø¿ÉÒÔÁé»îµØ×éºÏÀ´¹¹Ôì³ö²»Í¬µÄ²úÆ·¶ÔÏó¡£


--------------------------------------------------------------------------------


ʹÓý¨Ôìģʽ¹¹½¨¸´ÔÓ¶ÔÏó
¡¡¡¡¿¼ÂÇÕâÑùÒ»¸öʵ¼ÊÓ¦Óã¬Òª´´½¨Ò»¸ö±£ÏÕºÏͬµÄ¶ÔÏó£¬ÀïÃæºÜ¶àÊôÐÔµÄÖµ¶¼ÓÐÔ¼Êø£¬ÒªÇó´´½¨³öÀ´µÄ¶ÔÏóÊÇÂú×ãÕâÐ©Ô¼Êø¹æÔòµÄ¡£Ô¼Êø¹æÔò±ÈÈ磺±£ÏÕºÏͬͨ³£Çé¿öÏ¿ÉÒԺ͸öÈËÇ©¶©£¬Ò²¿ÉÒÔºÍij¸ö¹«Ë¾Ç©¶©£¬µ«ÊÇÒ»·Ý±£ÏÕºÏͬ²»ÄÜͬʱÓë¸öÈ˺͹«Ë¾Ç©¶©¡£Õâ¸ö¶ÔÏóÀïÓкܶàÀàËÆÕâÑùµÄÔ¼Êø£¬²ÉÓý¨ÔìģʽÀ´¹¹½¨¸´ÔӵĶÔÏó£¬Í¨³£»á¶Ô½¨Ôìģʽ½øÐÐÒ»¶¨µÄ¼ò»¯£¬ÒòΪĿ±êÃ÷È·£¬¾ÍÊÇ´´½¨Ä³¸ö¸´ÔÓ¶ÔÏó£¬Òò´Ë×öÊʵ±¼ò»¯»áʹ³ÌÐò¸ü¼ò½à¡£´óÖ¼ò»¯ÈçÏ£º

¡¡¡¡¡ñ¡¡¡¡ÓÉÓÚÊÇÓÃBuilderģʽÀ´´´½¨Ä³¸ö¶ÔÏó£¬Òò´Ë¾ÍûÓбØÒªÔÙ¶¨ÒåÒ»¸öBuilder½Ó¿Ú£¬Ö±½ÓÌṩһ¸ö¾ßÌåµÄ½¨ÔìÕßÀà¾Í¿ÉÒÔÁË¡£

¡¡¡¡¡ñ¡¡¡¡¶ÔÓÚ´´½¨Ò»¸ö¸´ÔӵĶÔÏ󣬿ÉÄÜ»áÓкܶàÖÖ²»Í¬µÄÑ¡ÔñºÍ²½Ö裬¸É´àÈ¥µô¡°µ¼ÑÝÕß¡±£¬°Ñµ¼ÑÝÕߵŦÄܺÍClientµÄ¹¦Äܺϲ¢ÆðÀ´£¬Ò²¾ÍÊÇ˵,ClientÕâ¸öʱºò¾ÍÏ൱ÓÚµ¼ÑÝÕߣ¬ËüÀ´Ö¸µ¼¹¹½¨Æ÷ÀàÈ¥¹¹½¨ÐèÒªµÄ¸´ÔÓ¶ÔÏó¡£

¡¡¡¡±£ÏÕºÏͬÀà

[java]
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;
this.endDate = endDate;
}

// ±»±£ÏÕÈËÔ±µÄÃû³Æ
public ConcreteBuilder setPersonName(String personName) {