工廠模式首先解決的是依賴問題:一個4s店須要一輛車(寶馬或者奧迪 。。。),能夠直接購買或者有別人提供,工廠模式就是用的別人提供的方法。圖: java
爲什嗎要用設計模式,他不是一個工具或者語言的一中機制,它是解決問題的思路,利用某種語言的的特性(繼承,多態、封裝等)。須要你作過項目寫過大量的代碼後纔會用到。也能夠不用,你可能會付出不少的時間。作項目最懼怕的就是後期維護,你前期框架不搭建好的話,後期都不知道怎麼修改或者要花上翻倍的時間。單純的學習設計模式可能沒有多好的效果。可是後面你會慢慢的發現他的能量之大。感受是每一個程序員必修的一門課。(話多說了一些!!) 程序員
工廠模式算是比較長用的,它是解決類依賴的耦合度的:就如圖解釋A學要B,經常使用的是new B實例,那麼後期須要換成C在修改代碼new C,若是要修該上百個,那你就受不了了。 設計模式
工廠模式的思路是利用多態機制不管怎麼變,都不用在邏輯代碼中查看修改,只須要在工廠類(一個類或接口)中修改一行代碼。 框架
提醒:建立類的實體2種方法:new 或者 一個方法。這裏就是用的方法。牢記這一點。 ide
1-----------A須要B(依賴),用靜態方法獲取實例: 工具
class Test { //Test類須要Animal public static void main(String[] args) { Animal animal = Factory.getAnimal(); System.out.print(animal.getName() + "=======" + animal.getColor()); } }這裏注意須要多態,Animal是個接口,這樣的話只要是實現了這個接口,就不用修改了。
interface Animal { public String getName(); public String getColor(); }工廠模式能夠想象成工廠就是一個普通的類,裏面有一個靜態方法返回一個須要的對象。
class Factory { public static Animal getAnimal() { return new Dog(); } }這裏返回的是Dog。上面的代碼能夠簡化成
Animal animal = new Dog();感受很麻煩,直接這句話不就得了,還拐那麼多彎。說了代碼少的話無所謂,但是有個幾萬行的代碼,你就傻眼了。
要實現上面代碼就要用到多態了,把Dog實現Animal接口 學習
class Dog implements Animal { String name = "dog"; String color = "black"; @Override public String getName() { // TODO Auto-generated method stub return name; } @Override public String getColor() { // TODO Auto-generated method stub return color; } }如今若是要修改代碼,換成貓Cat,就在建立一個類Cat,繼承Animal
class Cat implements Animal { String name = "cat"; String color = "red"; public String getName() { return name; } public String getColor() { return color; } }
在factory中修改一句:return new Cat(); 就能夠了。之後無論修改多少次10000次都不怕。
spa
工廠模式分了好幾種,我只是寫了其中的一種,網上有不少,看來看去文字太多,抄襲太多不容易理解,我就簡單的寫了一些。你想深如的話,能夠百度。
設計