亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

簡單工廠模式

系統(tǒng) 2112 0

文章摘抄自網(wǎng)絡(luò)

?

工廠模式是類的創(chuàng)建模式,又叫做虛擬構(gòu)造(Virtual Constructor)模式或者多態(tài)性工廠(Polymorphic Factory)模式。

工廠方法模式的用意是定義一個創(chuàng)建產(chǎn)品對象的工廠接口,將實際創(chuàng)建工作推遲到子類中。

?

工廠模式在《Java與模式》中分為三類:

1)簡單工廠模式(Simple Factory):不利于產(chǎn)生系列產(chǎn)品;

2)工廠方法模式(Factory Method):又稱為多形性工廠;

3)抽象工廠模式(Abstract Factory):又稱為工具箱,產(chǎn)生產(chǎn)品族,但不利于產(chǎn)生新的產(chǎn)品;

? ? ? ? ? ? ?這三種模式從上到下逐步抽象,并且更具一般性。

? ? ? ? ? ? ?GOF在《設(shè)計模式》一書中將工廠模式分為兩類:工廠方法模式(Factory Method)與抽象工廠模式(Abstract Factory)。將簡單工廠模式(Simple Factory)看為工廠方法模式的一種特例,兩者歸為一類。

?

一、簡單工廠模式

簡單工廠模式是類的創(chuàng)建模式,又叫靜態(tài)工廠方法模式(負責創(chuàng)建一般產(chǎn)品的類事例用的是一個靜態(tài)方法)。

簡單工廠模式

這里有三個基本的圖形,Circle,Square,Triangle而每個基本的圖形都有被畫和被被擦出的方法,接口Shape就定義了所有圖形都同用的這兩個方法,ArtTracer類提供了一個靜態(tài)工廠方法,在客戶端調(diào)用的情況下,返回客戶端所需要的類事例,其他的代碼都比較簡單,這里只給出ArtTracer類的代碼:

?

      public class ArtTracer {
    public static Shape factory(String witch) throw BadShapeException{
        if(wicth.equals("Circle"){
            return new Circle();
        }
        else if(wicth.equals("Square"){
            return new Square();
        }
        else if(wicth.equals("Triangle"){
            return new Triangle();       
        }else{
            throw new BadShapeException(witch);
        }
    }
}

public class BadShapeException extends Exception{
   public BdaShapeException(String witch){
	  super(witch);
   }
}
    

?

從上面的代碼可以看出,在客戶端使用的時候你只要去調(diào)用ArtTrace類的工廠方法,返回你想要的類的事例,而不需要關(guān)心內(nèi)部實現(xiàn)以及這個類事例到底是怎樣生成的,當你所調(diào)用的圖形是系統(tǒng)不支持的時候,將會給你拋出一個異常,簡單工廠模式是根據(jù)傳入的參數(shù)來決定到底應(yīng)該創(chuàng)建那個類的事例出來。下圖是簡單工廠模式的一般結(jié)構(gòu):

?

簡單工廠模式

?

由上圖可以看出,簡單工廠模式由,工廠角色,抽象產(chǎn)品角色,產(chǎn)品角色,這三部分:

工廠角色:這是工廠方法模式的核心,但客戶段調(diào)用他的工廠方法的時候,返回給客戶端的是產(chǎn)品角色的一個類事例。

抽象產(chǎn)品角色:定義了產(chǎn)品角色所共有的共性,通常由一個java接口或者是一個java抽象類。如果具體產(chǎn)品之間沒有共同的商業(yè)邏輯,就用java接口,如果有共同的商業(yè)邏輯,就用一個java抽象類。

產(chǎn)品角色:簡單工廠方法所創(chuàng)建的任何一個對象都是這個角色的一個類事例。

?

角色之間是可以相互合并的,例如三個角色合并成一個,就好象單例模式,單例模式自身是自己的工廠角色,但并不完全等同于單例模式,單例模式中的構(gòu)造方法是私有的。

簡單工廠模式的缺點是當在產(chǎn)品角色中再增加一個類的時候,工廠方法必須有發(fā)生響應(yīng)的改變,這就導致了擴展性,不符合開-閉原則。

?

?

簡單工廠模式


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 九九热视频免费 | 日韩经典欧美一区二区三区 | 免费观看黄色小视频 | 国产一区曰韩二区欧美三区 | 日本精品久久久久久久 | 国产高清一级视频在线观看 | 欧美性猛交xxxxxxxx软件 | 日本国产一区二区三区 | 国产在线精品一区免费香蕉 | 国产综合成人亚洲区 | 香港三级做爰大爽视频 | 在线视频综合视频免费观看 | 中文字幕日韩女同互慰视频 | va亚洲va日韩不卡在线观看 | a一级日本特黄aaa大片 | 亚洲欧美日韩一级特黄在线 | 九九99久久精品在免费线bt | 中文字幕一区2区3区 | 美女牲交视频一级毛片 | 亚洲国产精品成人久久 | 亚洲精品中文字幕乱码三区一二 | 色婷婷视频在线观看 | 天天干天天干天天操 | 爱爱视频天天看 | 国产日韩欧美亚洲 | www.深夜| 日本不卡在线一区二区三区视频 | 久久99热这里只有精品国产 | 亚洲高清在线观看看片 | 久久久日本精品一区二区三区 | 成人综合网站 | 亚洲激情综合 | 欧美日韩国产另类一区二区三区 | 亚洲最大黄色网址 | 日本中文字幕在线看 | 国产成人亚洲综合在线 | 国内精品视频一区二区八戒 | 四虎永久免费网站 | 亚洲综合国产一区二区三区 | 成人欧美精品久久久久影院 | 777福利|