Java設計模式----工廠方法模式

工廠方法模式就是通過一個工廠來創建對象,工廠方法模式分爲三種,普通工廠模式,多個工廠方法模式,靜態工廠方法模式

一 丶普通工廠模式

普通工廠模式,就是建立一個工廠類,對實現了同一接口的一些類進行實例的創建。

    /**
     * 聲明一個跑的接口
     * @author Vip_HYP
     */
    public interface Run{

        public void run();

    }

創建兩個實現類

    /**
     * 創建兩個實現類,女孩跑
     */
    public class GridRun implements Run{
        @Override
        public void run() {
            // TODO Auto-generated method stub
            System.out.println("女孩在跑步");
        }
    }
    /**
     * 創建兩個實現類,男孩跑
     */
    public class BoyRun implements Run{
        @Override
        public void run() {
            // TODO Auto-generated method stub
            System.out.println("男孩在跑步");
        }
    }

最後創建一個工廠類

    /**
     * 最後創建一個工廠類
     */
    public class RunFactory{
        public Run createRun(String arg0){
            if(arg0.equals("grid")){
                return new GridRun();
            }
            if(arg0.equals("boy")){
                return new BoyRun();
            }
            else{
                return null;
            }
        }
    }

測試:

    public static void main(String[] args) {  
        RunFactory factory = new RunFactory();  
        Run run= factory.createRun("grid");  
        run.run(); //輸出 女孩在跑步
    }  

二 丶多個工廠方法模式

是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字符串出錯,則不能正確創建對象,而多個工廠方法模式是提供多個工廠方法,分別創建對象。
修改普通工廠模式的工廠類:

    /**
     * 最後創建一個工廠類
     */
    public class RunFactory{
        public Run createGridRun(){
            return new GridRun();
        }
        public Run createBoyRun(){
            return new BoyRun();
        }
    }

測試:

        public static void main(String[] args) {
            RunFactory factory = new RunFactory();
            Run run = factory.createBoyRun();
            run.run();//輸出 男孩在跑步
        }

三 丶靜態工廠方法模式

將上面的多個工廠方法模式裏的方法置爲靜態的,不需要創建實例,直接調用即可。
測試:

        public static void main(String[] args) {
            Run run = RunFactory.createBoyRun();
            run.run();//輸出 男孩在跑步
        }

總結,工廠模式適合:凡是出現了大量的產品需要創建,並且具有共同的接口時,可以通過工廠方法模式進行創建。在以上的三種模式中,第一種如果傳入的字符串有誤,不能正確創建對象,第三種相對於第二種,不需要實例化工廠類,所以,大多數情況下,我們會選用第三種——靜態工廠方法模式。

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