¶¨ÒåÒ»¸öÓÃÓÚ´´½¨¶ÔÏóµÄ½Ó¿Ú£¬ÈÃ×ÓÀà¾ö¶¨ÊµÀý»¯ÄÄÒ»¸öÀà¡£FactoryMethodʹһ¸öÀàµÄʵÀýÑÓ³Ùµ½Æä×ÓÀà¡£
ÊÊÓÃÐÔ
1.µ±Ò»¸öÀ಻֪µÀËüËù±ØÐë´´½¨µÄ¶ÔÏóµÄÀàµÄʱºò¡£
2.µ±Ò»¸öÀàÏ£ÍûÓÉËüµÄ×ÓÀàÀ´Ö¸¶¨ËüËù´´½¨µÄ¶ÔÏóµÄʱºò¡£
3.µ±*½«´´½¨¶ÔÏóµÄÖ°ÔðίÍиø¶à¸ö°ïÖú*ÀàÖеÄijһ¸ö£¬²¢ÇÒÏ£Íû½«ÄÄÒ»¸ö°ïÖú×ÓÀàÊÇ´úÀíÕßÕâÒ»ÐÅÏ¢¾Ö²¿»¯µÄʱºò¡£
²ÎÓëÕß
1.Product
¶¨Ò幤³§·½·¨Ëù´´½¨µÄ¶ÔÏóµÄ½Ó¿Ú¡£
2.ConcreteProduct
ʵÏÖProduct½Ó¿Ú¡£
3.Creator
ÉùÃ÷¹¤³§·½·¨£¬¸Ã·½·¨·µ»ØÒ»¸öProductÀàÐ͵ĶÔÏó*
CreatorÒ²¿ÉÒÔ¶¨ÒåÒ»¸ö¹¤³§·½·¨µÄȱʡʵÏÖ£¬Ëü·µ»ØÒ»¸öȱʡµÄConcreteProduct¶ÔÏó¡£
¿ÉÒÔµ÷Óù¤³§·½·¨ÒÔ´´½¨Ò»¸öProduct¶ÔÏó¡£
4.ConcreteCreator
ÖØ¶¨Ò幤³§·½·¨ÒÔ·µ»ØÒ»¸öConcreteProductʵÀý¡£
Ààͼ

Àý×Ó
Product
public interface Work {
void doWork();
}
ConcreteProduct
public class StudentWork implements Work {
public void doWork() {
System.out.println("ѧÉú×ö×÷Òµ!");
}
}
public class TeacherWork implements Work {
public void doWork() {
System.out.println("ÀÏʦÉóÅú×÷Òµ!");
}
}
Creator
public interface IWorkFactory {
Work get*ork();
}
Concre*eCreator
pu*lic class StudentWorkFactory implements IWorkFactory {
public Work getWork() {
*eturn new StudentWork();
}
}
public class TeacherWorkFactory implements IWorkFactory {
public Work getWork() {
return new TeacherWork();
}
}
Test
public class Test {
public static void m*in(Strin*[] args) {
IWorkFactory studentWorkFactory = new StudentWorkFactory();
studentWorkFactory.getWork().doWork();
IWorkFactory teacherWorkFactory = new TeacherWorkFactory();
teacherWorkFactory.g*tWork().doWork();
}
}
result
ѧÉú×ö×÷Òµ!
ÀÏʦÉóÅú×÷Òµ!