qiuyadong's Homepage

工厂设计模式


设计模式中创建类模式,工厂包含简单工厂,抽象工厂。

简单工厂

简单工厂模式中,只要添加新的产品类,就得去修改工厂类,这样做势必违反了开闭原则。


public class SimpleFactory {

    public Milk getMilk(String name){
        if("特仑苏".equals(name)){
            return new Telunsu();
        }else if("伊利".equals(name)){
            return new Yili();
        }else if("蒙牛".equals(name)){
            return new Mengniu();
        }else {
            System.out.println("不能生产您所需的产品");
            return null;
        }
    }

}

test


/**
 * 小作坊式的工厂模型
 */
public class SimpleFactoryTest {
    public static void main(String[] args) {
        //这个new的过程实际上一个比较复杂的过程
        //有人民币及不需要自己new了
       // System.out.println(new Telunsu().getName());

        //小作坊式的生产模式
        //用户本身不再关心生产的过程,而只需要关心这个结果

        //假如:特仑苏、伊利、蒙牛
        //成分配比都是不一样的
        SimpleFactory factory = new SimpleFactory();

        //把用户的需求告诉工厂
        //创建产品的过程隐藏了,对于用户而且完全不清楚是怎么产生的
        System.out.println(factory.getMilk("AAA"));
        //知其然,知其所以然,知其所必然

    }
}


抽象工厂

新增抽象工厂类,让抽象产品对应抽象工厂,让具体产品对应具体工厂,实际的创建工作推迟到子类工厂中去做。

工厂接口-标准

/**
 * 工厂模型
 */
public interface Factory {

    //工厂必然具有生产产品技能,统一的产品出口
    Milk getMilk();

}

蒙牛子场


public class MengniuFactory implements  Factory {
    @Override
    public Milk getMilk() {
        return new Mengniu();
    }
}

test


public class FactoryTest {
    public static void main(String[] args) {
        //货比三家
        //不知道谁好谁好谁坏
        //配置,可能会配置错
        Factory factory = new SanluFactory();
        System.out.println(factory.getMilk());

    }
}



Comments