Java設計模式_創建型_工廠模式_商品是這樣生產的

轉載請註明出處:http://blog.csdn.net/ljmingcom304/article/details/50395150
本文出自:【梁敬明的博客】

1.有什麼樣的產品需求

  甲公司說他們需要一批商品,乙公司說你需要什麼商品,我們都有。但是甲公司還沒有確定是否找乙公司合作,所以具體需要什麼商品還沒有詳談,可以做什麼也不知道,但是對於商品的需求是明確的。

public interface Product {
    public void use();
}

2.就會有什麼生產工廠

  雖然甲公司還沒有確定找乙公司合作,但是生產商品的工廠,乙公司還是要有的,如果連工廠沒有,還怎麼與甲公司談業務合作!至於需要生產什麼產品的工廠,就要等相互合作開始以後進行具體詳談。

public interface Factory<T> {
    public T produce(Class<T> clazz);
}

3.原來甲公司需要這些商品

  甲公司的領導在參觀乙公司後感覺還不錯,決定於乙公司開展業務合作,甲公司提出他們需要喫起來十分美味的食物和開起來相當酸爽的轎車。

public class Food implements Product {
    @Override
    public void use() {
        System.out.println("美味");
    }
}

public class Car implements Product {
    @Override
    public void use() {
        System.out.println("酸爽");
    }
}

4.選取對應生產工廠很重要

  當然對於乙公司來說So easy,公司的工廠很多,不但可以及時生產,而且還有很多的存貨,可以加快交貨的時間,畢竟時間就是金錢。

public class FoodFactory implements Factory<Food> {
    //食物倉庫
    private HashMap<Class<Food>, Food> map = new HashMap<Class<Food>, Food>();

    @Override
    public Food produce(Class<Food> clazz) {
        //看看有沒有庫存
        Food food = map.get(clazz);
        //沒有就繼續生產
        if (food == null) {
            try {
                food = clazz.newInstance();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return food;
    }

}

public class CarFactory implements Factory<Car> {
    //轎車倉庫
    private HashMap<Class<Car>, Car> map = new HashMap<Class<Car>, Car>();

    @Override
    public Car produce(Class<Car> clazz) {
        //看看有沒有庫存
        Car car = map.get(clazz);
        //沒有就進行生產
        if (car == null) {
            try {
                car = (Car) clazz.newInstance();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return car;
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章