通俗講解工廠模式!!!

2021-10-04 22:26:33 字數 2510 閱讀 1691

作用與本質

作用:實現了建立者與呼叫者的分離。

核心本質:

詳細分類

這些文字很無聊哈。

還是直接看**吧。

汽車例子講解工廠模式化

//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 方法的第乙個引數是這個類,而其餘的引數會在呼叫成功後全部傳遞...