簡單工廠

簡單工廠模式解決的問題是如何去實例化一個合適的對象。

簡單工廠模式的核心思想就是:有一個專門的類來負責創建實例的過程。

      

簡單工廠模式中包含的角色及其相應的職責如下:

       工廠角色(Creator):這是簡單工廠模式的核心,由它負責創建所有的類的內部邏輯。當然工廠類必須能夠被外界調用,創建所需要的產品對象。

       抽象(Product)產品角色:簡單工廠模式所創建的所有對象的父類,注意,這裏的父類可以是接口也可以是抽象類,它負責描述所有實例所共有的公共接口。

       具體產品(Concrete Product)角色:簡單工廠所創建的具體實例對象,這些具體的產品往往都擁有共同的父類。



        簡單工廠模式分離產品的創建者和消費者,有利於軟件系統結構的優化;但是由於一切邏輯都集中在一個工廠類中,導致了沒有很高的內聚性,同時也違背了“開放封閉原則”。另外,簡單工廠模式的方法一般都是靜態的,而靜態工廠方法是無法讓子類繼承的,因此,簡單工廠模式無法形成基於基類的繼承樹結構。



wKiom1Y4P6bASj4qAAHg_IhL8Qw320.jpg



實現代碼

public class 簡單工廠 {

public static void main(String[] args) {

SimpleFactory sx =  new SimpleFactory();

Food xiaochaorou = (Food) sx.getT(XiaoChaoRou.class);

xiaochaorou.get();

Food tudousi = (Food) sx.getT(TuDouSi.class);

tudousi.get();

}

}

//Food基類

interface Food{

public void get();

}

//小炒肉

class XiaoChaoRou implements Food{


@Override

public void get() {

System.out.println("你好,小炒肉出鍋啦,請慢用!");

}

}

//土豆絲

class TuDouSi implements Food{


@Override

public void get() {

// TODO Auto-generated method stub

System.out.println("你好,土豆絲出鍋啦,請慢用!");

}

}

//炒菜的廚房

class SimpleFactory<T>{

public T getT(Class clazz){

try {

return (T) clazz.newInstance();

} catch (InstantiationException | IllegalAccessException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

}


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