使用性(使用场景):
1.当一个类不知道它所必须创建的对象的类的时候
2.当一个类希望由它的子类来指定它所创建的对象的时候3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候
代码示例:
public class TestFactoryMethod { public static void main(String[] args) { IWorkFactory i = new StudentWorkFactory(); i.getWork().doWork(); IWorkFactory i1 =new TeacherWorkFactory(); i1.getWork().doWork(); } } interface IWorkFactory { Work getWork(); } class StudentWorkFactory implements IWorkFactory { @Override public Work getWork() { return new StudentWork(); } } class TeacherWorkFactory implements IWorkFactory { @Override public Work getWork() { return new TeacherWork(); } } interface Work { void doWork(); } class StudentWork implements Work { @Override public void doWork() { System.out.println("学生写作业"); } } class TeacherWork implements Work { @Override public void doWork() { System.out.println("老师批改作业"); } }
结果:
学生写作业
老师批改作业