利用反射機制實現工廠模式

2021-07-16 23:48:38 字數 1012 閱讀 8137

//細節:命名規則類,介面名稱都得大寫;

// 寫完**記得格式化,就算是測試**,貼出來也是給人看的。不能太水。

inte***ce fruit

public void eat()

}class orange implements fruit

}class factory catch (exception e)

return f;

}}class hello

}}

現在就算我們新增任意多個子類的時候,工廠類就不需要修改。

上面的**雖然可以通過反射取得介面的例項,但是需要傳入完整的包和類名。而且使用者也無法知道乙個介面有多少個可以使用的實現類

(**是別人的,總結是自己的,就像jdk是別人的,理解是自己的一樣。)

不足之處:商品多的話,會出現海量的商品類,雖然在工廠中省去了具體判斷是什麼樣的商品,但是還是免不了去做一大堆的商品類。這個常不常用我就不敢妄加斷言啦。但是下面的三個規則還是存在的。只是

工廠中省去了具體判斷。

總結下有以下三個方面,來實現乙個工廠方法。

工廠規則:

有個介面,作用是提供乙個規則,估計也可以是乙個抽象類,提供大部分公共方法的實現也是可以的

工廠商品:

商品的種類很多,各不相同,但是都有乙個共通點,那就是都遵守上面的工廠規則。具體實現可以實現介面或者繼承抽象方法等等。

工廠:

返回的是乙個介面型別的商品物件,對外提供的也只是規則中包含的方法。根據商品之間的不同,來生產不同的商品。相當於父型別的引用指向其實現類或者子類,(多型),當然,也可以型別強制轉換成子類物件。就像男人是人,人不一定是男人。類似這種關係。

咳咳,寫錯了,人能不強轉成男人,至於為啥就自己猜吧。

編譯時沒錯,執行時就炸了,這個也是多型的乙個常問的問題。就不贅述啦

php 工廠模式 反射機制

class classarr param type 類庫 param classs 工廠庫 param array param 引數 param bool needinstance return object throws reflectionexception 如果工廠模式方法是靜態的那麼就直接返...

反射實現簡單工廠模式

傳統的簡單工廠模式缺點是 缺點 由於工廠類集中了所有例項的建立邏輯,這就直接導致一旦這個工廠出了問題,所有的客戶端都會受到牽連 這樣一來,但產品的種類增加的時候,即有不同的產品介面或者抽象類的時候,工廠類就需要判斷何時建立何種種類的產品,這就和建立何種種類產品的產品相互混淆在了一起,違背了單一職責,...

Qt利用反射機制實現函式呼叫

qt本身就帶有強大的反射功能,如果想通過函式名稱字串呼叫函式,需要在被呼叫的函式前新增巨集 q invokable定義乙個基類 pragma once include class qtinvoke public qobject include qtinvoke.h include qtinvoke ...