Õ¾ÄÚËÑË÷: ÇëÊäÈëËÑË÷¹Ø¼ü´Ê

µ±Ç°Ò³Ãæ: ¿ª·¢×ÊÁÏÊ×Ò³ ¡ú Java רÌâ ¡ú JavaÉè¼Æģʽ֮¹¤³§·½·¨Ä£Ê½

JavaÉè¼Æģʽ֮¹¤³§·½·¨Ä£Ê½

ÕªÒª: ¹¤³§·½·¨Ä£Ê½µÄÒâÒåÊǶ¨ÒåÒ»¸ö´´½¨²úÆ·¶ÔÏóµÄ¹¤³§½Ó¿Ú£¬½«Êµ¼Ê´´½¨¹¤×÷ÍƳٵ½×ÓÀ൱ÖÐ
¡¡¡¡Ò» ¡¢¹¤³§·½·¨£¨Factory Method£©Ä£Ê½

¡¡¡¡¹¤³§·½·¨Ä£Ê½µÄÒâÒåÊǶ¨ÒåÒ»¸ö´´½¨²úÆ·¶ÔÏóµÄ¹¤³§½Ó¿Ú£¬½«Êµ¼Ê´´½¨¹¤×÷ÍƳٵ½×ÓÀ൱ÖС£ºËÐŤ³§À಻ÔÙ¸ºÔð²úÆ·µÄ´´½¨£¬ÕâÑùºËÐÄÀà³ÉΪһ¸ö³éÏ󹤳§½ÇÉ«£¬½ö¸ºÔð¾ßÌ幤³§×ÓÀà±ØÐëʵÏֵĽӿڣ¬ÕâÑù½øÒ»²½³éÏ󻯵ĺô¦ÊÇʹµÃ¹¤³§·½·¨Ä£Ê½¿ÉÒÔʹϵͳÔÚ²»Ð޸ľßÌ幤³§½ÇÉ«µÄÇé¿öÏÂÒý½øеIJúÆ·¡£

¡¡¡¡¶þ¡¢ ¹¤³§·½·¨Ä£Ê½½ÇÉ«Óë½á¹¹

¡¡¡¡³éÏ󹤳§£¨Creator£©½ÇÉ«£ºÊǹ¤³§·½·¨Ä£Ê½µÄºËÐÄ£¬ÓëÓ¦ÓóÌÐòÎ޹ء£ÈκÎÔÚģʽÖд´½¨µÄ¶ÔÏóµÄ¹¤³§Àà±ØÐëʵÏÖÕâ¸ö½Ó¿Ú¡£

¡¡¡¡¾ßÌ幤³§£¨Concrete Creator£©½ÇÉ«£ºÕâÊÇʵÏÖ³éÏ󹤳§½Ó¿ÚµÄ¾ßÌ幤³§À࣬°üº¬ÓëÓ¦ÓóÌÐòÃÜÇÐÏà¹ØµÄÂß¼­£¬²¢ÇÒÊܵ½Ó¦ÓóÌÐòµ÷ÓÃÒÔ´´½¨²úÆ·¶ÔÏó¡£ÔÚÉÏͼÖÐÓÐÁ½¸öÕâÑùµÄ½ÇÉ«£ºBulbCreatorÓëTubeCreator¡£

¡¡¡¡³éÏó²úÆ·£¨Product£©½ÇÉ«£º¹¤³§·½·¨Ä£Ê½Ëù´´½¨µÄ¶ÔÏóµÄ³¬ÀàÐÍ£¬Ò²¾ÍÊDzúÆ·¶ÔÏóµÄ¹²Í¬¸¸Àà»ò¹²Í¬ÓµÓеĽӿڡ£ÔÚÉÏͼÖУ¬Õâ¸ö½ÇÉ«ÊÇLight¡£

¡¡¡¡¾ßÌå²úÆ·£¨Concrete Product£©½ÇÉ«£ºÕâ¸ö½ÇɫʵÏÖÁ˳éÏó²úÆ·½ÇÉ«Ëù¶¨ÒåµÄ½Ó¿Ú¡£Ä³¾ßÌå²úÆ·ÓÐרÃŵľßÌ幤³§´´½¨£¬ËüÃÇÖ®¼äÍùÍùÒ»Ò»¶ÔÓ¦¡£
¡¡¡¡¡¡
<table width="90%" align=center> <tr> <td> </td></tr></table>
¡¡¡¡Èý¡¢Ò»¸ö¼òµ¥µÄʵÀý¡¡¡¡¡¡

<table borderColor=#cccccc width="90%" align=center bgColor=#e1e1e1 border=1> <tr> <td>// ²úÆ· Plant½Ó¿Ú
public interface Plant { }
//¾ßÌå²úÆ·PlantA£¬PlantB
public class PlantA implements Plant {

¡¡public PlantA () {
¡¡¡¡System.out.println("create PlantA !");
¡¡}

¡¡public void doSomething() {
¡¡¡¡System.out.println(" PlantA do something ...");
¡¡}
}
public class PlantB implements Plant {
¡¡public PlantB () {
¡¡¡¡System.out.println("create PlantB !");
¡¡}

¡¡public void doSomething() {
¡¡¡¡System.out.println(" PlantB do something ...");
¡¡}
}
// ²úÆ· Fruit½Ó¿Ú
public interface Fruit { }
//¾ßÌå²úÆ·FruitA£¬FruitB
public class FruitA implements Fruit {
¡¡public FruitA() {
¡¡¡¡System.out.println("create FruitA !");
¡¡}
¡¡public void doSomething() {
¡¡¡¡System.out.println(" FruitA do something ...");
¡¡}
}
public class FruitB implements Fruit {
¡¡public FruitB() {
¡¡¡¡System.out.println("create FruitB !");
¡¡}
¡¡public void doSomething() {
¡¡¡¡System.out.println(" FruitB do something ...");
¡¡}
}
// ³éÏ󹤳§·½·¨
public interface AbstractFactory {
¡¡public Plant createPlant();
¡¡public Fruit createFruit() ;
}
//¾ßÌ幤³§·½·¨
public class FactoryA implements AbstractFactory {
¡¡public Plant createPlant() {
¡¡¡¡return new PlantA();
¡¡}
¡¡public Fruit createFruit() {
¡¡¡¡return new FruitA();
¡¡}
}
public class FactoryB implements AbstractFactory {
¡¡public Plant createPlant() {
¡¡¡¡return new PlantB();
¡¡}
¡¡public Fruit createFruit() {
¡¡¡¡return new FruitB();
¡¡}
} </td></tr></table>
¡¡¡¡ËÄ¡¢¹¤³§·½·¨Ä£Ê½Óë¼òµ¥¹¤³§Ä£Ê½

¡¡¡¡¹¤³§·½·¨Ä£Ê½Óë¼òµ¥¹¤³§Ä£Ê½ÔٽṹÉϵIJ»Í¬²»ÊǺÜÃ÷ÏÔ¡£¹¤³§·½·¨ÀàµÄºËÐÄÊÇÒ»¸ö³éÏ󹤳§À࣬¶ø¼òµ¥¹¤³§Ä£Ê½°ÑºËÐÄ·ÅÔÚÒ»¸ö¾ßÌåÀàÉÏ¡£

¡¡¡¡¹¤³§·½·¨Ä£Ê½Ö®ËùÒÔÓÐÒ»¸ö±ðÃû½Ð¶à̬ÐÔ¹¤³§Ä£Ê½ÊÇÒòΪ¾ßÌ幤³§À඼Óй²Í¬µÄ½Ó¿Ú£¬»òÕßÓй²Í¬µÄ³éÏó¸¸Àà¡£

¡¡¡¡µ±ÏµÍ³À©Õ¹ÐèÒªÌí¼ÓеIJúÆ·¶ÔÏóʱ£¬½ö½öÐèÒªÌí¼ÓÒ»¸ö¾ßÌå¶ÔÏóÒÔ¼°Ò»¸ö¾ßÌ幤³ §¶ÔÏó£¬Ô­Óй¤³§¶ÔÏó²»ÐèÒª½øÐÐÈκÎÐ޸ģ¬Ò²²»ÐèÒªÐ޸Ŀͻ§¶Ë£¬ºÜºÃµÄ·ûºÏÁË"¿ª·Å£­·â±Õ"Ô­Ôò¡£¶ø¼òµ¥¹¤³§Ä£Ê½ÔÚÌí¼ÓвúÆ·¶ÔÏóºó²»µÃ²»Ð޸Ť³§·½·¨£¬À©Õ¹ÐÔ²»ºÃ¡£

¡¡¡¡¹¤³§·½·¨Ä£Ê½ÍË»¯ºó¿ÉÒÔÑݱä³É¼òµ¥¹¤³§Ä£Ê½¡£

¡ü·µ»ØĿ¼
ǰһƪ: SpringÈëÃÅÖ¸ÒýÖ®»ñÈ¡Spring¿ò¼Ü
ºóһƪ: Java¿ªÔ´¹¹½¨¹¤¾ßant¼ò½é