您的位置:首页 > 其它

我看懂的设计模式 Factory Method工厂方法

2012-11-07 17:57 218 查看
Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类。





package com.cbf4life;

public interface Human {

public void laugh();

public void cry();

public void talk();

}

package com.cbf4life;

public class YellowHuman implements Human {

public void cry() {

System.out.println("***人种会哭");

}

public void laugh() {

System.out.println("***人种会大笑,幸福呀!");

}

public void talk() {

System.out.println("***人种会说话,一般说的都是双字节");

}

}

package com.cbf4life;

public class WhiteHuman implements Human {

public void cry() {

System.out.println("白色人种会哭");

}

public void laugh() {

System.out.println("白色人种会大笑,侵略的笑声");

}

public void talk() {

System.out.println("白色人种会说话,一般都是但是单字节!");

}

}

package com.cbf4life;

public class BlackHuman implements Human {

public void cry() {

System.out.println("黑人会哭");

}

public void laugh() {

System.out.println("黑人会笑");

}

public void talk() {

System.out.println("黑人可以说话,一般人听不懂");

}

}

package com.cbf4life;

import java.util.List;

import java.util.Random;

public class HumanFactory {

public static Human createHuman(Class c){

Human human=null;

try {

human = (Human)Class.forName(c.getName()).newInstance();

} catch (InstantiationException e) {

System.out.println("必须指定人种的颜色");

} catch (IllegalAccessException e) {

System.out.println("人种定义错误!");

} catch (ClassNotFoundException e) {

System.out.println("混蛋,你指定的人种找不到!");

}

return human;

}

package com.cbf4life;

public class NvWa {

public static void main(String[] args) {

//女娲第一次造人

System.out.println("------------造出的第一批人是这样的:白人

-----------------");

Human whiteHuman = HumanFactory.createHuman(WhiteHuman.class);

whiteHuman.cry();

whiteHuman.laugh();

whiteHuman.talk();

//女娲第二次造人

System.out.println("\n\n------------造出的第二批人是这样的:黑人

-----------------");

Human blackHuman = HumanFactory.createHuman(BlackHuman.class);

blackHuman.cry();

blackHuman.laugh();

blackHuman.talk();

//第三批

System.out.println("\n\n------------造出的第三批人是这样的:***人种

-----------------");

Human yellowHuman = HumanFactory.createHuman(YellowHuman.class);

yellowHuman.cry();

yellowHuman.laugh();

yellowHuman.talk()

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: