Java設計模式 簡單工廠

2021-06-18 20:32:36 字數 1276 閱讀 6924

先看一段書中的**,類似的**相信很多人、包括我都寫過。因為作為初學者,對於介面的使用一般都會這樣寫。

/**

*乙個介面、簡單定義乙個方法test(string str),輸出給定 的字串

*/public inte***ce api

/***實現類,對介面api的實現

*/public class impl implements api

}//客戶端

public class client

}

針對介面的呼叫,基本上所有人都這樣寫過:api api = new impl();,這樣寫完全沒有語法錯誤,但是卻背離的介面呼叫的出發點和思想。因為impl作為具體的實現類,暴露給了客戶端,客戶端知道了功能的具體實現者是實現類impl,這就破壞了「封裝隔離」。

出於呼叫的需要,允許客戶端知道介面,但不允許其知道介面的具體實現類,如何做到,可以給要呼叫的介面加層「外套」,外套內是要隱藏的細節,外套外是客戶端,兩者通過外套隔離。

打個比方:將一間只有一扇門,沒有窗戶的房子作為乙個工廠車間,它與外界的唯一通道就那扇門。外界不知道車間如何生產產品,但可以通過那扇門取得產品並使用。回到設計模式中,「門」就是我們說的介面,「產品」就是介面定義而由實現類實現的方法,「房子」也就是車間,就是將外部呼叫與內部實現隔離開的隔離體。這就是簡單工廠的思想。

定義: 提供乙個建立物件例項功能但不需關心具體實現的類,返回建立類的介面,客戶端通過該類得到返回的介面,進而可以呼叫介面的方法。(這個解釋不夠抽象,感覺是**級別的,理解有待加深)

下面是簡單工廠模式的示例**:

//介面的定義 

public inte***ce api

//介面的實現

public class impl inplements api

}//工廠類 建立api物件,包裝建立細節,返回api物件

public class factory

}//客戶端

public class client

}

在工廠類factory中,通過實現類impl實現api介面,並返回得到的api物件,對於客戶端,想要使用operation()方法,只需要通過factory類得到乙個api物件即可,對於介面api的具體實現,是完全被隱藏的,這就將客戶客戶端的呼叫與介面的具體實現隔離開。達到封裝隔離的目的。

上面的示例是只有乙個實現類的簡單示例,目的只是闡述簡單工廠模式的思想,並未涉及簡單工廠中其他知識。

java簡單工廠設計模式

1.概念 就是建立乙個工廠類,對實現了某乙個介面的的一些類進行例項的建立,其實質是根據傳入的引數,動態判斷應該建立 哪乙個產品類的例項。2,舉例 寫乙個娃娃的介面,有兩個產品類,乙個是布娃娃,乙個是芭比娃娃,由工廠物件決定建立出哪乙個類的例項。娃娃介面 娃娃 inte ce doll布娃娃 和 芭比...

java設計模式 簡單工廠模式

大話設計模式 第一章 package ch01 public abstract class operation public void setnumbera double numbera public double getnumberb public void setnumberb double n...

java設計模式 簡單工廠模式

簡單工廠模式 所謂的工廠模式就是用乙個類專門來建立物件,建立的類有共同的父類。簡單工廠模式的實質是建立乙個工廠類的方法,通過其引數傳入要建立的類。然後將其建立出來。在簡單工廠模式中,工廠類是整個模式的關鍵,其包含必要的判斷邏輯,能夠根據外界給定的資訊,決定究竟建立哪個類的例項,外界可以不用去關注物件...