工厂方式模型---(比喻人类或者生产线的产品)
Demo:
//抽象人类创造工厂
public abstract class AbstractHumanFactory
{
public abstract <T extends Human> T createHuman(Class<T> c);
}
//人类创建工厂
public class HumanFactory extends AbstractHumanFactory
{
@Override
public <T extends Human> T createHuman(Class<T> c)
{
Human human = null;
try
{
human = (Human)Class.forName(c.getName()).newInstance();
}catch (Exception e) {
System.out.println("people is error");
}
return (T)human;
}
}
//人种(黄、白、黑---,不一一列举)
public class YellowHuman implements Human
{
@Override
public void getColor() {
System.out.println("yello is yello color");
}
@Override
public void talk() {
System.out.println("yello is yello talk");
}
}
//人的属性
public interface Human
{
public void getColor();
public void talk();
}
//开始创建人啦
public class NvWa
{
public static void main(String[] args)
{
AbstractHumanFactory YinYangLu =new HumanFactory();
System.out.println("new one people is whit man");
Human whiteHuman = YinYangLu.createHuman(WhiteHuman.class);
whiteHuman.getColor();
whiteHuman.talk();
System.out.println("new two people is black man");
Human blackHuman = YinYangLu.createHuman(BlackHuman.class);
blackHuman.getColor();
blackHuman.talk();
}
}
-------------------------------------------------------------------------------------------------------------------------------
创建的模型:(产品模型)
//抽象工厂类
public abstract class Creator
{
public abstract <T extends Product> T createProduct(Class<T> c);
}
//具体工厂类
public class ConcreteCreator extends Creator {
@Override
public <T extends Product> T createProduct(Class<T> c)
{
Product product = null;
try
{
product = (Product)Class.forName(c.getName()).newInstance();
}catch (Exception e) {
// TODO: handle exception
}
return (T)product;
}
}
//抽象产品类
public abstract class Product
{
public void method1()
{
}
public abstract void method2();
}
//具体产品类
public class ConcreateProduct1 extends Product{
@Override
public void method2() {
// TODO Auto-generated method stub
}
}
//生产产品
public class Client
{
public static void main(String[] args)
{
Creator creator = new ConcreteCreator();
Product product = creator.createProduct(ConcreateProduct1.class);
}
}
《java设计模式之禅》http://download.csdn.net/detail/u011636207/6198269