軟件設計模式——工廠模式

一、定義

工廠模式是爲了解決簡單工廠模式中,工廠判斷方法的日漸複雜而衍生出來的模式。如果後面需要創建的“產品”越來越多,那麼這個簡單工廠類會包含越來越多的if-else判斷類。這樣維護起來會非常的麻煩。同樣也違反了開閉原則。

二、設計類圖

工廠模式也就是鼠標工廠是個父類,有生產鼠標這個接口。戴爾鼠標工廠,惠普鼠標工廠繼承它,可以分別生產戴爾鼠標,惠普鼠標。生產哪種鼠標不再由參數決定,而是創建鼠標工廠時,由戴爾鼠標工廠創建。後續直接調用鼠標工廠.生產鼠標()即可。

三、代碼實現

鼠標的創建接口: 

public interface Mouse {

    void sayHi();

}
public class HaierMouse implements Mouse {

    @Override
    public void sayHi() {
        System.out.println("Haier Mouse Say Hi");
    }
}
public class HisenseMouse implements Mouse {

    @Override
    public void sayHi() {
        System.out.println("Hisnese Mouse Say Hi.");
    }
}

創建鼠標的工廠: 

public abstract class MouseFactory {
    public abstract Mouse createMouse();
}

海爾的鼠標工廠:

public class HaierMouseFactory extends MouseFactory {

    @Override
    public Mouse createMouse() {
        return new HaierMouse();
    }
}

海信的鼠標工廠:

public class HisenseMouseFactory extends MouseFactory {

    @Override
    public Mouse createMouse() {
        return new HisenseMouse();
    }
}

這裏是關鍵,實例化的動作又從工廠類中轉義到了客戶端實現,直接鼠標工廠.創建鼠標

public class Main {
    public static void main(String[] args) {
        //創建一個海爾的鼠標
        MouseFactory mouseFactory = new HaierMouseFactory();
        mouseFactory.createMouse().sayHi();

        //創建一個海信的鼠標
        MouseFactory mouseFactory2 = new HisenseMouseFactory();
        mouseFactory2.createMouse().sayHi();
    }
}

執行結果:

Haier Mouse Say Hi
Hisnese Mouse Say Hi.

Process finished with exit code 0

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章