工厂模式之简单工厂模式,head first设计模式

放下手上的事情,清空内心,简单设计模式比较简单,我需要你15分钟的时间,跟着我做,十几分钟学会简单设计模式,开始吧:

1.使用new实例化一个对象时,你肯定知道这种代码缺少弹性,绑定着具体的类会导致代码更加脆弱,简单工厂模式就是针对接口编程,巧妙的设计解决这个问题。

Pizza pizza =new CheesePizza();

2,直接上一个简单工厂模式代码,然后分析。你可以拷贝自己建立以下四个类

 Pizza类:披萨类

package com.example.demo.factory;

import java.util.ArrayList;

public abstract class Pizza {
    /**
     * 名称
     */
    String name;
    /**
     * 面团类型
     */
    String dough;
    /**
     * 酱料
     */
    String sauce;
    /**
     * 作料
     */
    ArrayList<String> toppings = new ArrayList<String>();

    void prepare() {
        System.out.println("准备 " + name);
        System.out.println("揉面团...");
        System.out.println("添加酱料...");
        System.out.println("添加作料: ");
        for (int i = 0; i < toppings.size(); i++) {
            System.out.println("   " + toppings.get(i));
        }
    }

    void bake() {
        System.out.println("烘烤25分钟");
    }

    void cut() {
        System.out.println("把Pizza对角切片");
    }

    void box() {
        System.out.println("把Pizza装盒子");
    }

    public String getName() {
        return name;
    }

}

简单披萨工厂类:SimplePizzaFactory,根据需求创建不同的披萨

package com.example.demo.factory;

import org.apache.commons.codec.binary.StringUtils;

public class SimplePizzaFactory {
    public Pizza createPizza(String type) {
        Pizza pizza = null;
        if (StringUtils.equals(type,"cheese")) {
            pizza = new CheesePizza();
        } else if (StringUtils.equals(type,"veggie")) {
            pizza = new VeggiePizza();
        }
        return pizza;
    }
}

披萨店类:PizzaStore,生成披萨

package com.example.demo.factory;
public  class PizzaStore {
       private final SimplePizzaFactory factory;
        public PizzaStore(SimplePizzaFactory factory) {
            this.factory = factory;
        }
        public Pizza orderPizza(String type) {
            Pizza pizza;
            pizza = factory.createPizza(type);
            pizza.prepare();
            pizza.bake();
            pizza.cut();
            pizza.box();
            return pizza;
        }
}

main启动类:

package com.example.demo;

import com.example.demo.factory.Pizza;
import com.example.demo.factory.PizzaStore;
import com.example.demo.factory.SimplePizzaFactory;

public class PizzaApplication {

    public static void main(String[] args) {
        SimplePizzaFactory factory = new SimplePizzaFactory();
        PizzaStore store = new PizzaStore(factory);

        Pizza pizza = store.orderPizza("cheese");
        System.out.println("We ordered a " + pizza.getName() + "\n");

        pizza = store.orderPizza("veggie");
        System.out.println("We ordered a " + pizza.getName() + "\n");
    }
}

将这四个类考入到你的eclipse或者idea运行,恐怕不要过多解释你就能看懂其中的巧妙之处,其实简单工厂不是一个设计模式,反而更像一种编程习惯;

运行结果:

好了到这我想你拷贝代码大概用了5分钟,接下来十分钟自己分析调用逻辑流程比较好,别人说永远说不清楚,逻辑较为简单,梳理一下就好了,就不详细讲解,相信你可以做到的,在这仅提供一份资源和信念;

代码是我自己运行没问题拷贝过来的,如有问题没法运行或者需要详细讲解的请留言,定当回复一起探讨!谢谢!

猜你喜欢

转载自www.cnblogs.com/ljw-bim/p/9141413.html