23種設計模式之簡單工廠設計模式

1、概念

1.簡單工廠設計模式,顧名思義,劃重點,就是簡單。
2.工廠,什麼是工廠呢,聯繫我們生活來說就是一個工廠就是生產東西的地方

2、實際應用

1.假如我們現在有一個場景,比如一個用戶去買車,想買一個寶馬或者路虎。那麼根據面向對象我們可以這麼寫

新建一個對象代表寶馬汽車

package com.app.factory;

/**
 * @ClassName: Bmw
 * @Description (寶馬)
 * @Date:2019/9/24 9:50
 * @Author: lk
 * @see
 * @since JDK 1.8
 */
public class Bmw {

}

新建一個對象代表路虎汽車

package com.app.factory;

/**
 * @ClassName: LandRover
 * @Description (路虎汽車)
 * @Date:2019/9/24 9:50
 * @Author: lk
 * @see
 * @since JDK 1.8
 */
public class LandRover {

}

新建一個啓動類,代表用戶購買了路虎或者寶馬,因此直接這麼寫

package com.app.factory;

/**
 * @ClassName: FactoryTest
 * @Description (這裏用一句話描述這個類的作用)
 * @Date:2019/9/24 9:51
 * @Author: lk
 * @see
 * @since JDK 1.8
 */
public class FactoryMain{
    public static void main(String[] args) {
        /*
         * 買了個寶馬車
         */
        Bmw bmw = new Bmw();
        /**
         * 買了個路虎車
         */
        LandRover landRover = new LandRover();
    }
}

2.根據我們實際情況,new 代表新創建,用戶是不可能直接造車,用戶需要的是買車,而寶馬和路虎有一個公共點,那就都是車,因此我們可以這樣寫

package com.app.factory;

/**
 * @ClassName: FactoryCar
 * @Description (定義車接口 統一)
 * @Date:2019/9/24 9:59
 * @Author: lk
 * @see
 * @since JDK 1.8
 */
public interface Car {
    /*
     * 用戶買車啓動類
     */
    void run();
}

實體類變更爲:

package com.app.factory;

/**
 * @ClassName: Bmw
 * @Description (寶馬)
 * @Date:2019/9/24 9:50
 * @Author: lk
 * @see
 * @since JDK 1.8
 */
public class Bmw  implements Car{

    @Override
    public void run() {
        System.out.println("購買了寶馬汽車");
    }
}

package com.app.factory;

/**
 * @ClassName: LandRover
 * @Description (路虎汽車)
 * @Date:2019/9/24 9:50
 * @Author: lk
 * @see
 * @since JDK 1.8
 */
public class LandRover implements Car {

    @Override
    public void run() {
        System.out.println("購買了路虎汽車");
    }
}

編寫一個工廠,用戶傳入標記,來判斷用戶購買什麼汽車

package com.app.factory;

/**
 * @ClassName: FactoryCar
 * @Description (車的工廠)
 * @Date:2019/9/24 15:00
 * @Author: lk
 * @see
 * @since JDK 1.8
 */
public class FactoryCar {
    /**
     * 根據標記判斷用戶是需要買哪個車
     * @Author: lk
     */
    public static Car getBuyCar(String sign){
        Car car=null;
        if("luhu".equals(sign)){
            car=new LandRover();
        }else if("baoma".equals(sign)){
            car=new Bmw();
        }else{
            throw new RuntimeException("沒有這個牌子的汽車");
        }
        return car;
    }
}

在這裏插入圖片描述
簡單工廠設計模式大家學會了嗎?和小編一起努力吧
在這裏插入圖片描述

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