作用與本質作用:實現了建立者與呼叫者的分離。
核心本質:
詳細分類這些文字很無聊哈。
還是直接看**吧。
汽車例子講解工廠模式化
//car介面
public
inte***ce
car//具體的乙個車(五菱巨集光)去實現car介面
public
class
wuling
implements
car}
//具體的乙個車(特斯拉)去實現car介面
public
class
tesla
implements
car}
//消費者
public
class
consumer
}
上面的**是我們沒有使用工廠模式來實現的,那麼我們現在要怎麼使用工廠模式呢?
簡單來說,就是建立乙個ca***ctory,我們不去new,通過ca***ctory得到car。
//簡單工廠模式又叫靜態工廠模式
//增加乙個產品,還是得修改原來的**,這樣是有弊端的。
//不滿足開閉原則
public
class
ca***ctory
else
if(car.
equals
("特斯拉"))
else
}//方法二
public
static car getwuling()
public
static car gettesla()
}//簡單工廠模式
在沒有使用工廠模式之前,我們需要去new,如果wuling和tesla有很多引數,在new的時候就麻煩不少。
但是使用工廠模式,就不用關心底層了,我不管他是怎麼實現的,我只管交給車車工廠就行了,我只要告訴他我要什麼車,由車工廠去幫你。這樣是不是就省事很多!
當然也有一定的問題,不滿足開閉原則,要增加乙個產品,得修改原來的**。
那怎麼去解決這個問題呢?工廠方法!
public
inte***ce
carpublic
class
wuling
implements
car}
public
class
tesla
implements
car}
//工廠方法模式
public
inte***ce
ca***ctory
//具體的車工廠(wuling)去實現 ca***ctory
public
class
wulingfactory
implements
ca***ctory
}//具體的車工廠(tesla)去實現 ca***ctory
public
class
teslafactory
implements
ca***ctory
}//消費者直接去具體的車工廠拿車即可。
public
class
consumer
}
現在我們要增加乙個產品,如摩拜單車,那麼不需要更改原來的**,我們只需增加如下 即可。
public
class
mobai
implements
car}
public
class
mobaifactory
implements
ca***ctory
}public
class
consumer
}
通過乙個圖再梳理一下:
你想要任意產品都可以,不需更改原來的**。但是我們也看到**量比簡單工廠要多。
小結
從以下幾個方面對比一下簡單工廠與工廠方法:
根據設計原則:工廠方法模式。
根據實際開發:簡單工廠模式。
應用場景
廠方法:
根據設計原則:工廠方法模式。
根據實際開發:簡單工廠模式。
應用場景
svm通俗講解 SVM通俗講解
svm support vector machine 支援向量機相關理論介紹 基於資料的機器學習是現代智慧型技術中的重要方面,研究從觀測資料 樣本 出發尋找規律,利用這些規律對未來資料或無法觀測的資料進行 迄今為止,關於機器學習還沒有一種被共同接受的理論框架,關於其實現方法 大致可以分為 三種 3 ...
epoll通俗講解
首先我們來定義流的概念,乙個流可以是檔案,socket,pipe等等可以進行i o操作的核心物件。不管是檔案,還是套接字,還是管道,我們都可以把他們看作流。之後我們來討論i o的操作,通過read,我們可以從流中讀入資料 通過write,我們可以往流寫入資料。現在假定乙個情形,我們需要從流中讀資料,...
通俗講解python new
目錄 於別人的部落格 曾經我幼稚的以為認識了python的 init 方法就相當於認識了類構造器,結果,new 方法突然出現在我眼前,讓我突然認識到原來 new 才是老大。為什麼這麼說呢?我們首先得從 new cls 的引數說說起,new 方法的第乙個引數是這個類,而其餘的引數會在呼叫成功後全部傳遞...