工廠方法模式就是父類不知道具體子類的情況下實現自己的功能。
這個模式跟ioc有異曲同工之處。ioc的介面也是不知道其實現,然後直接使用其功能。ioc的子類是通過反射來獲取的。而且工廠方法子類是後面new出來的的。
先看具體的實現
1、介面
public inte***ce phone
2、3個實現
public class nokia implements phone
}
public class iphone implements phone
}
public class htc implements phone
}
3、工廠方法
public abstract class factory
}
4、工廠方法的實現
public class iphonefactory extends factory
}
public class nokiafactory extends factory
}
5、main方法
public class main
}
這樣就是乙個工廠方法的簡單實現。為什麼htc類沒有工廠方法的實現,這個類是為了表示工廠方法的另外一種模式(後面會說到)。
其實這裡大家就可以看出工廠方法的優缺點。
最大的優點就是延遲了子類的實現,父類可以在不知道具體子類的情況下完成功能。ioc模式也是類似的
最大的缺點就是工廠方法的實現類與產品的實現類嚴重耦合。比如諾基亞的工廠方法就必須跟諾基亞的產品耦合,這樣大大提高了**間的耦合度。而且還有乙個缺點就是如果有大量的子類,那麼工廠方法實現類也會有許多。
下面介紹工廠方法的另外一種模式 帶引數的工廠方法
1與2 不變
3、工廠方法
public class factoryother else if (money < 2000)
return phone;
}public void call(int money)
}
public class factoryotherchild extends factoryother else
return phone;}}
4、main方法
public class mainother
}
這樣能過引數來實現乙個簡單工廠,這樣可以遮蔽掉工廠方法的實現類,減少類的生成。當然缺點跟簡單工廠一樣。
工廠方法模式 工廠方法模式
工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...
工廠方法模式 工廠方法模式 二
工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...
工廠方法模式(一) 簡單工廠方法模式
ps 第二篇學習部落格,堅持就是勝利。繼續設計模式的學習,記錄工廠模式,加深自己的理解。基本結構 abstractproduct 用來定義基本的商品的抽象 public abstract class abstractphoneproduct 用來實現抽象商品,生成各種商品 public class ...