工厂方法模型
抽象类:Product 负责定义产品的共性,是事物最抽象的定义
抽象类:Creator 定义抽象创建类,也就是抽象工厂,定义了创建产品的方法
实现类:ConcreteProduct 刻画具体产品,实现Product接口
实现类:ConcreteCreator 实现具体工厂类,创建产品
import java.io.*;
import java.util.*;
/*
* 抽象人类总称
*/
interface Human
{
void getColor();
void talk();
}
/*
*
*抽象人类创建工厂,定义上限为Human,输入参数为class文件
*/
abstract class AbstractFactory
{
public abstract T createHuman(Class c);
}
/*
* 黑人,黄种人,白人实体
*/
class BlackHuman implements Human
{
public void getColor()
{
System.out.println("黑人");
}
public void talk()
{
System.out.println("黑人说话:要要 切克闹");
}
}
class YellowHuman implements Human
{
public void getColor()
{
System.out.println("黄种人");
}
public void talk()
{
System.out.println("黄种人说话:查水表啦");
}
}
class WhiteHuman implements Human
{
public void getColor() {
System.out.println("白人");
}
public void talk() {
System.out.println("白人说话:嘿,老伙计");
}
}
/*
*创建工厂的实体
*/
class HumanFactory extends AbstractFactory
{
public T createHuman(Class c)
{
Human human=null;
try{
human=(T)Class.forName(c.getName()).newInstance();
}catch (Exception e){
System.out.println("创建人类失败");
}
return (T)human;
}
}
class Main
{
public static void main(String args[])
{
AbstractFactory YinYangLu =new HumanFactory();
System.out.println("-------白人---------");
Human whiteHuman =YinYangLu.createHuman(WhiteHuman.class);
whiteHuman.getColor();
whiteHuman.talk();
System.out.println("-------黄种人---------");
Human yellowHuman =YinYangLu.createHuman(YellowHuman.class);
yellowHuman.getColor();
yellowHuman.talk();
System.out.println("-------黑人---------");
Human blackHuman =YinYangLu.createHuman(BlackHuman.class);
blackHuman.getColor();
blackHuman.talk();
}
}
具体实现代码