Java編程開發設計模式之--抽象工廠模式(Abstract Factory)

    在工廠方法模式中,創建產品類完全依賴於工廠類本身,一旦有擴展需求,就必須對工廠類進行修改,這其實是違背設計原則中的閉包原則的,因此,在設計思路存在瑕疵。解決這一問題,就得用到本文中將詳述的抽象工廠模式。即抽取工廠類接口,創建多個工廠類,這樣如有新需要增加的功能,可以直接增加新的工廠類,不需要修改現存代碼。先看下面類圖:


詳細代碼如下:

首先建立一個共同接口

public interface Connector {
    public boolean connect(String url);
}
    接着建立兩個上面接口的實現類
public class Bluetooch implements Connector {
    @Override
    public boolean connect(String url) {
        System.out.println(String.format("%s.%s called!",this.getClass().getName(),"connect()"));
        return false;
    }
}
public class Httprequest implements Connector {
    @Override
    public boolean connect(String url) {
        System.out.println(String.format("%s.%s called!",this.getClass().getName(),"connect()"));
        return false;
    }
}
     然後提供一個工廠類接口

public interface Producer {
    public Connector produce();
}

    之後就可以根據需要增加工廠類

public class BluetoochFactory implements Producer {
    @Override
    public Connector produce() {
        return new Bluetooch();
    }
}

public class HttprequestFactory implements Producer {
    @Override
    public Connector produce() {
        return new Httprequest();
    }
}
最後測試類

public class WorkClass {
    public void test()
    {

        Producer producer = new BluetoochFactory();
        Connector connectorBluetooch = producer.produce();
        connectorBluetooch.connect("bluetooch://");
    }
}

    輸出:
designpattern.creator.Bluetooch.connect() called!
抽象工廠模式的優勢不言自明,可擴展性強,對於一些新增加功能,比如,新增加Socket通信類只需要做一個實現類實現Connector接口,再同時做一個工廠類,實現Producer 接口,完工!無需去改動已有的代碼。

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