設(shè)計(jì)模式之抽象工廠模式

抽象工廠模式

抽象工廠UML.png
interface Shoe{
    void wear();
}

定義鞋類(lèi)接口,定義公共方法穿鞋子。

interface Hat{
    void wear();
}

定義帽子類(lèi)接口,定義公共方法戴帽子。

class LeatherShoe implements Shoe{
    public LeatherShoe(){
        
    }
    
    public void wear(){
        //穿皮鞋
    }
}

皮鞋實(shí)體類(lèi)

class ClothShoe implements Shoe{
    public ClothShoe(){
        
    }
    
    public void wear(){
        //穿布鞋
    }
}   

布鞋實(shí)體類(lèi)

class LeatherHat implements Hat{
    public LeatherHat(){
        
    }
    
    public void wear(){
        //帶皮帽
    }
}

皮帽實(shí)體類(lèi)

class ClothHat implements Hat{
    public ClothHat(){
        
    }
    
    public void wear(){
        //戴草帽
    }
}   

草帽實(shí)體類(lèi)

interface Factory{
    Shoe createShoe();
    Hat creatHat();
}

工廠接口

class ClothFactory implements Factory{
    public Shoe createShoe(){
        ClothShoe clothShoe = new ClothShoe();
        return clothShoe;
    }
    public Hat creatHat(){
        ClothHat clothHat = new ClothHat();
        return clothHat;
    }
}

布料工廠類(lèi)

class LeatherFactory implements Factory{
    public Shoe createShoe(){
        LeatherShoe leatherShoe = new LeatherShoe();
        return leatherShoe;
    }
    
    public Hat creatHat(){
        LeatherHat leatherHat = new LeatherHat();
        return leatherHat;
    }
}

皮料工廠類(lèi)

class Client{
    public static void main(String args[]){
        Shoe mShoe;
        Hat mHat;
        Factory mFactory;
        mFactory = new ClothFactory();//創(chuàng)建布料工廠
        mShoe = mFactory.createShoe();//工廠生產(chǎn)鞋
        mHat = mFactory.creatHat();//工廠生產(chǎn)帽子
        mShoe.wear();//穿布鞋
        mHat.wear();//戴帽子
    }
}   

客戶(hù)端

優(yōu)點(diǎn)

  1. 抽象工廠模式隔離了具體類(lèi)的生成,使得客戶(hù)并不需要知道什么被創(chuàng)建。由于這種隔離, 更換一個(gè)具體工廠就變得相對(duì)容易,所有的具體工廠都實(shí)現(xiàn)了抽象工廠中定義的那些公共接 口,因此只需改變具體工廠的實(shí)例,就可以在某種程度上改變整個(gè)軟件系統(tǒng)的行為。
  2. 當(dāng)一個(gè)產(chǎn)品族中的多個(gè)對(duì)象被設(shè)計(jì)成一起工作時(shí),它能夠保證客戶(hù)端始終只使用同一個(gè)產(chǎn) 品族中的對(duì)象。
  3. 增加新的產(chǎn)品族很方便,無(wú)須修改已有系統(tǒng),符合“開(kāi)閉原則”。

缺點(diǎn)

  1. 增加新的產(chǎn)品等級(jí)結(jié)構(gòu)麻煩,需要對(duì)原有系統(tǒng)進(jìn)行較大的修改,甚至需要修改抽象層代碼, 這顯然會(huì)帶來(lái)較大的不便,違背了“開(kāi)閉原則”。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容