首页 > 编程语言 > 详细

java设计模式之工厂方法模式

时间:2020-07-10 20:46:03      阅读:75      评论:0      收藏:0      [点我收藏+]

1、定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

2、代码示例

/**
 * 抽象人类创造工厂
 */
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 = (T) Class.forName(c.getName()).newInstance();
        } catch (Exception e) {
            System.out.println("人种生成错误! ");
        }
        return (T)human;
    }

}
/**
 * 人类总称
 */
public interface Human {

    //每个人种的皮肤都有相应的颜色
    public void getColor();
    //人类会说话
    public void talk();
}
/**
 * 黑种人
 */
public class BlackHuman implements Human {

    public void getColor(){
        System.out.println("黑色人种的皮肤颜色是黑色的! ");
    }
    public void talk() {
        System.out.println("黑人会说话, 一般人听不懂。 ");
    }

}
/**
 * 白种人
 */
public class WhiteHuman implements Human {

    public void getColor(){
        System.out.println("白色人种的皮肤颜色是白色的! ");
    }
    public void talk() {
        System.out.println("白色人种会说话, 一般都是但是单字节。 ");
    }

}
/**
 * 黄种人
 */
public class YellowHuman implements Human {

    public void getColor(){
        System.out.println("黄色人种的皮肤颜色是黄色的! ");
    }
    public void talk() {
        System.out.println("黄色人种会说话, 一般说的都是双字节。 ");
    }

}
/**
 * 女娲类
 */
public class NvWa {

    public static void main(String[] args) {
        //声明阴阳八卦炉
        AbstractHumanFactory YinYangLu = new HumanFactory();
        //女娲第一次造人, 火候不足, 于是白人产生了
        System.out.println("--造出的第一批人是白色人种--");
        Human whiteHuman = YinYangLu.createHuman(WhiteHuman.class);
        whiteHuman.getColor();
        whiteHuman.talk();
        //女娲第二次造人, 火候过足, 于是黑人产生了
        System.out.println("\n--造出的第二批人是黑色人种--");
        Human blackHuman = YinYangLu.createHuman(BlackHuman.class);
        blackHuman.getColor();
        blackHuman.talk();
        //第三次造人, 火候刚刚好, 于是黄色人种产生了
        System.out.println("\n--造出的第三批人是黄色人种--");
        Human yellowHuman = YinYangLu.createHuman(YellowHuman.class);
        yellowHuman.getColor();
        yellowHuman.talk();
        
    }
}

 

java设计模式之工厂方法模式

原文:https://www.cnblogs.com/st-learning/p/13280394.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!