//細節:命名規則類,介面名稱都得大寫;
// 寫完**記得格式化,就算是測試**,貼出來也是給人看的。不能太水。
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 ...