工廠模式

簡(jiǎn)單工廠模式

建立一個(gè)工廠類(lèi),對(duì)實(shí)現(xiàn)了同一接口的一些類(lèi)進(jìn)行實(shí)例的創(chuàng)建。工廠類(lèi)根據(jù)傳入?yún)?shù)的不同創(chuàng)建不同的對(duì)象。

簡(jiǎn)單工廠模式
package com.normalFactory;
/**
 * ClassName: MobileFactory 
 * @Description:普通工廠模式:建立一個(gè)工廠類(lèi),對(duì)實(shí)現(xiàn)了同一接口的一些類(lèi)進(jìn)行實(shí)例的創(chuàng)建。 
 * @date 2015年10月12日
 */
public class MobileFactory {
    public Mobile build(String type){
        if(type.equals("Samsung")){
            return new Samsung();
        }else if(type.equals("Huawei")){
            return new Huawei();
        }
        return null;
    }
}
package com.normalFactory;

public interface Mobile {
    public void runFunc();
}

package com.normalFactory;

public class Huawei implements Mobile {
    @Override
    public void runFunc() {
        System.out.println("Huawei");
    }
}

package com.normalFactory;

public class Samsung implements Mobile {
    @Override
    public void runFunc() {
        System.out.println("Samsung");
    }
}
package com.normalFactory;

public class Main {
    public static void main(String[] args) {
        MobileFactory mf = new MobileFactory();
        Mobile samsung = mf.build("Samsung");
        Mobile huawei = mf.build("Huawei");
        samsung.runFunc();
        huawei.runFunc();
    }
}

工廠方法模式

定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類(lèi)決定實(shí)例化哪一個(gè)類(lèi)。工廠方法使一個(gè)類(lèi)的實(shí)例化延遲到其子類(lèi)。

工廠方法模式
package com.factoryMethod;
/**
 * ClassName: MobileFactory 
 * 簡(jiǎn)單工廠模式有一個(gè)問(wèn)題就是,類(lèi)的創(chuàng)建依賴(lài)工廠類(lèi),也就是說(shuō),如果想要拓展程序,必須對(duì)工廠類(lèi)進(jìn)行修改,這違背了閉包原則。
 * 所以,從設(shè)計(jì)角度考慮,有一定的問(wèn)題,如何解決?就用到工廠方法模式,創(chuàng)建工廠接口和多個(gè)工廠類(lèi),這樣一旦需要增加新的功能,
 * 直接增加新的工廠類(lèi)就可以了,不需要修改之前的代碼。
 * @date 2015年10月12日
 */
public interface MobileFactory {
    public Mobile build();
}
package com.factoryMethod;

public class HuaweiFactory implements MobileFactory {
    @Override
    public Mobile build() {
        return new Huawei();
    }
}
package com.factoryMethod;

public class SamsungFactory implements MobileFactory {
    @Override
    public Mobile build() {
        return new Samsung();
    }
}
package com.factoryMethod;

public interface Mobile {
    public void runFunc();
}

package com.factoryMethod;

public class Samsung implements Mobile {
    @Override
    public void runFunc() {
        System.out.println("Samsung");
    }
}
package com.factoryMethod;

public class Huawei implements Mobile {
    @Override
    public void runFunc() {
        System.out.println("Huawei");
    }
}

package com.factoryMethod;

public class Main {
    public static void main(String[] args) {
        MobileFactory fac = new SamsungFactory();
        Mobile samsung = fac.build();
        samsung.runFunc();
    }
}

抽象工廠模式

提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴(lài)對(duì)象的接口,而無(wú)需指定他們具體的類(lèi)。

抽象工廠模式

我感覺(jué),抽象工廠模式和工廠方法模式一樣,只是工廠方法是創(chuàng)建一個(gè)對(duì)象,而抽象工廠模式是創(chuàng)建一組對(duì)象而已。(不知道這種理解對(duì)不對(duì))

最后編輯于
?著作權(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)容