package com.test.design.factory;
public interface IWork {
public void howToDo();
public void doing();
}
package com.test.design.factory;
public class Farmer implements IWork {
@Override
public void doing() {
System.out.println("正在种地...");
}
@Override
public void howToDo() {
System.out.println("该工作就是种地...");
}
}
package com.test.design.factory;
public class Teacher implements IWork {
@Override
public void doing() {
System.out.println("正在教小朋友读书...");
}
@Override
public void howToDo() {
System.out.println("该工作就是教小朋友读书...");
}
}
package com.test.design.factory;
import java.util.HashMap;
public class Factory {
//延迟初始化用(在类初始化很消耗资源的情况比较实用)
private static HashMap<String, IWork> works = new HashMap<String, IWork>();
public static IWork createWork(Class c){
IWork work = null;
try {
if(works.containsKey(c.getSimpleName())){
return works.get(c.getSimpleName());
}else{
work = (IWork)Class.forName(c.getName()).newInstance();
works.put(c.getSimpleName(), work);
}
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return work;
}
}
package com.test.design.factory;
public class employer {
public static void main(String[] args) {
IWork teacher = Factory.createWork(Teacher.class);
teacher.howToDo();
teacher.doing();
IWork farmer = Factory.createWork(Farmer.class);
farmer.howToDo();
farmer.doing();
}
}