继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java设计模式 - 工厂方法

ifynn
关注TA
已关注
手记 5
粉丝 17
获赞 653
一、工厂方法

定义:利用工厂类,对实现同一接口的不同类进行实例的创建。也就是根据不同的需求,创建不同的子类对象。

现在有一个基类Anim,有一个AnimFactory工厂类,所有实现了Anim的子类都通过AnimFactory来创建:

public interface Anim {
    void eat();
}
public class Bird implements Anim {
    @Override
    public void eat() {
        System.out.println("Bird start eating");
    }
}
public class Fish implements Anim {

    @Override
    public void eat() {
        System.out.println("Fish start eating");
    }
}
public class AnimFactory {
    public static final int FISH = 0x01;
    public static final int BIRD = 0x02;

    public static Anim createAnim(int animType) {
        Anim anim = null;
        switch (animType) {
            case FISH:
                anim = new Fish();
                break;

            case BIRD:
                anim = new Bird();
                break;

            default:
                break;
        }

        return anim;
    }

    public static final void main(String[] args) {
        AnimFactory.createAnim(AnimFactory.BIRD).eat();
        AnimFactory.createAnim(AnimFactory.FISH).eat();
    }
}

输出结果:

Bird start eating
Fish start eating

当然,我们还可以将AnimFactory 创建为基类,实现多个AnimFactory 子类,分别通过每个AnimFactory 子类创建对应的Anim 子类对象,在此就不一一诉说了。

二、jdk中的工厂方法
java.lang.Object.toString()
java.lang.Boolean.valueOf(String)
......

具体可看源代码中的实现。

打开App,阅读手记
22人推荐
发表评论
随时随地看视频慕课网APP

热门评论

如果子类太多,那么AnimFactory还是可控的吗?

查看全部评论