Skip to content

Latest commit

 

History

History
81 lines (65 loc) · 1.67 KB

File metadata and controls

81 lines (65 loc) · 1.67 KB

工厂模式

大概意思就不要说了,直接举个例子,看例子讲解就知道是什么意思了。

举例子

定义一个面条抽象类

abstract class INoodles {
    /**
     * 描述每种面条长什么样的...
     */
    public abstract void desc();
}

定义一份兰州拉面(具体产品)

class LzNoodles extends INoodles {

    @Override
    public void desc() {
        System.out.println("兰州拉面,成都的好贵 家里的才5-6块钱一碗");
    }
}

定义一份泡面(程序员挺喜欢的)

class PaoNoodles extends INoodles {

    @Override
    public void desc() {
        System.out.println("泡面可还行...");
    }
}

不得不说家乡的杂酱面了,好吃得不得了

class ZaNoodles extends INoodles {

    @Override
    public void desc() {
        System.out.println("杂酱面,嗯? 真香...");
    }
}

重头戏,开面条馆了。(工厂)

class SimpleNoodlesFactory {
    public static final int TYPE_LZ = 1; // 兰州拉面
    public static final int TYPE_PAO = 2; // 泡面撒
    public static final int TYPE_ZA = 3; // 杂酱面
    // 提供静态方法
    public static INoodles createNoodles(int type) {
        switch (type) {
            case TYPE_LZ:return new LzNoodles();
            case TYPE_PAO:return new PaoNoodles();
            case TYPE_ZA:return new ZaNoodles();
            default:return new ZaNoodles();
        }
    }
}

测试

public class FactoryMode {
    public static void main(String[] args) {
        INoodles noodles = SimpleNoodlesFactory.createNoodles(SimpleNoodlesFactory.TYPE_ZA);
        noodles.desc();
    }
}