// 雷锋类public class LeiFeng { public void Sweep(){ System.out.println("扫地"); } public void Wash(){ System.out.println("洗衣"); } public void BuyRice(){ System.out.println("买米"); }}// 学雷锋的大学生public class Undergraduate extends LeiFeng {}// 学雷锋的社区志愿者public class Volunteer extends LeiFeng {}// 雷锋工厂interface IFactory { LeiFeng createLeiFeng();}// 学雷锋的大学生工厂public class UndergraduateFactory implements IFactory{ @Override public LeiFeng createLeiFeng() { return new Undergraduate(); }}// 学雷锋的志愿者工厂public class VolunteerFactory implements IFactory{ @Override public LeiFeng createLeiFeng() { return new Volunteer(); }}// 通过反射来创建学生实例public class UnderReflection { private static final String FactoryName = "UndergraduateFactory"; public static LeiFeng CreateUnder() throws InstantiationException, IllegalAccessException, ClassNotFoundException{ UndergraduateFactory newInstance =(UndergraduateFactory)Class.forName("com.design.five.factory.mehtod.leifeng.factorymethod."+FactoryName).newInstance(); return newInstance.createLeiFeng(); } }// 通过反射获取志愿者实例public class VolunteerReflection { private static final String FactoryName = "VolunteerFactory"; public static LeiFeng CreateVolunteer() throws InstantiationException, IllegalAccessException, ClassNotFoundException{ VolunteerReflection newInstance = (VolunteerReflection) Class.forName("com.design.five.factory.mehtod.leifeng.factorymethod."+FactoryName).newInstance(); return newInstance.CreateVolunteer(); }}public class Test { public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {// 使用工厂方法 IFactory undergraduateFactory = new UndergraduateFactory(); LeiFeng createLeiFeng = undergraduateFactory.createLeiFeng(); createLeiFeng.BuyRice(); IFactory volunteerFactory = new VolunteerFactory(); LeiFeng createLeiFeng1 = volunteerFactory.createLeiFeng(); createLeiFeng1.BuyRice();// 使用反射 LeiFeng under = UnderReflection.CreateUnder(); under.BuyRice(); LeiFeng volunteer = VolunteerReflection.CreateVolunteer(); volunteer.BuyRice(); }}