設計模式--簡單工廠模式

什麼是工廠模式

工廠模式(Factory Pattern)是 Java 中最經常使用的設計模式之一。這種類型的設計模式屬於建立型模式,它提供了一種建立對象的最佳方式。 在工廠模式中,咱們在建立對象時不會對客戶端暴露建立邏輯,而且是經過使用一個共同的接口來指向新建立的對象。html

簡單的解釋

例咱們將肯德基看成一個工廠,當咱們去點餐,只須要告訴前臺,我要一個漢堡或薯條便可,咱們不須要去關心漢堡是如何製做;
咱們點餐的過程至關於咱們建立一個工廠類,告訴前臺咱們要一個漢堡至關於把名稱告訴工廠,由工廠去生產;
而前臺告訴廚房:一個漢堡,至關於由工廠決定咱們調用哪一個類、哪一個對象,最終廚房把漢堡給前臺,前臺在遞到咱們手中,則至關於對象實例化完成;設計模式

  • 優勢
    建立一個對象,只須要知道名稱便可;擴展性高,增長產品,只須要增長對應的工廠類;
  • 缺點
    每增長一個產品,都須要對應的工具類、工廠類;一個工廠只能生產一個產品;當產品過多時,必定程序增長了系統的複雜性;

代碼解釋

實現一個計算器類,由輸入兩個數字、運算符,獲得結果;
一、首先聲明一個抽象類,該抽象類只有一個方法,輸入數字,返回計算結果bash

/**
 * 運算抽像類,只有一個獲取返回結果的方法
 */
public abstract class OperatorAction {

    /**
     * 根據計算 獲取返回結果
     * @param numberFIrst
     * @param numberSecond
     * @return
     */
    public abstract Integer getResult(String numberFIrst,String numberSecond);

}

複製代碼

二、聲明對應的子類,繼承抽像父類,實現其計算方法ide

public class AddOperatorAction extends OperatorAction {

    private String operator="+";

    /**
     * 此處僅實現相加運算操做,其它-,*,/ 可實現同時的子類進行操做
     * @param numberFIrst
     * @param numberSecond
     * @return
     */
    @Override
    public Integer getResult(String numberFIrst, String numberSecond) {
        return Integer.valueOf(numberFIrst)+Integer.valueOf(numberSecond);
    }
}
複製代碼

三、建立一個簡單的工廠,根據運算符去決定實例化對應的類工具

public class Action {

    public static OperatorAction factory(String operator){
        OperatorAction oper=null;
        switch (operator){
            case "+":
                oper=new AddOperatorAction();
                break;
        }
        return oper;
    }

    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        System.out.print("簡單工廠模式,簡易計算器\n請輸入第一個數字:\n");
        String numberFirst=sc.nextLine();
        System.out.println("請輸入運算符(+、-、*、/):");
        String operator=sc.nextLine();
        System.out.println("請輸入第二個數字:");
        String numberSecond=sc.nextLine();
        OperatorAction oper=factory(operator);
        System.out.println("運算結果:"+oper.getResult(numberFirst,numberSecond));
    }
}
複製代碼

後記

工廠模式在Java開發中最多見的就是Spring、Hibernate,像Spring的Bean工廠,咱們只須要知道bean的name就能夠直接調用,而Hibernate的鏈接咱們一樣從SessionFactory中直接獲取,經過工廠模式下降的藕合,使得在開發中變的更加容易,高效;ui

代碼參照:大話設計模式
名稱解釋:www.runoob.com/design-patt…spa

相關文章
相關標籤/搜索