第一步:
package factory;
public interface IHuman
{
public void say();
}
第二步:
package factory;
public class YellowMan implements IHuman
{
public void say()
{
System.out.println("我是黄种人");
}
}
第三步:
package factory;
public abstract class AbManFactory
{
public abstract<T extends IHuman> T createHuman(Class<T> c);
}
第四部:
package factory;
public class ManFactory extends AbManFactory
{
@Override
public <T extends IHuman> T createHuman(Class<T> c)
{
IHuman human=null;
try
{
human=(IHuman) Class.forName(c.getName()).newInstance();
}
catch (InstantiationException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalAccessException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return (T) human;
}
}
第五步:
package factory;
public class Text
{
public static void main(String[] args)
{
AbManFactory factory=new ManFactory();
YellowMan man=factory.createHuman(YellowMan.class);
man.say();
}
}
package factory;
public interface IHuman
{
public void say();
}
第二步:
package factory;
public class YellowMan implements IHuman
{
public void say()
{
System.out.println("我是黄种人");
}
}
第三步:
package factory;
public abstract class AbManFactory
{
public abstract<T extends IHuman> T createHuman(Class<T> c);
}
第四部:
package factory;
public class ManFactory extends AbManFactory
{
@Override
public <T extends IHuman> T createHuman(Class<T> c)
{
IHuman human=null;
try
{
human=(IHuman) Class.forName(c.getName()).newInstance();
}
catch (InstantiationException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalAccessException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return (T) human;
}
}
第五步:
package factory;
public class Text
{
public static void main(String[] args)
{
AbManFactory factory=new ManFactory();
YellowMan man=factory.createHuman(YellowMan.class);
man.say();
}
}