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

設計模式分爲三大類,創建型模式、結構型模式、行爲型模式,簡單工廠模式屬於創建型模式,那什麼是創建型模式呢?簡單的來說就是創建對象,如果從面向對象編程角度思考,從它的名字就能知道含義,在現實的世界工廠是製造東西的地方,那麼在編程的世界工廠就是生產“對象”的地方。但簡單工廠不屬於23種GOF設計模式之一。
簡單工廠的概念:
1. 簡單工廠模式又稱爲靜態工廠方法模式,稱爲靜態工廠是因爲它創建對象的方法是靜態,因此就不用實例化工廠本身來獲取對象。
2. 簡單工廠就是定義一個工廠類,然後根據不同的參數變量返回不同對象實例。
拿<<大話設計模式>>裏面運算器例子說明,運算器能夠執行加法和減法操作,定義一個操作接口,加法操作和減法操作實現操作接口,並且定義一個工廠來產生加法或者減法對象實例。簡單工廠模式類圖:
這裏寫圖片描述
簡單工廠模式具體實現:

package com.xll.simpleFactory;
/**
 *Created by xll 2016/8/15 
 */
public class Main {

    public static void main(String[] args){
        Operator operator = SimpleFactory.operator("add");
        operator.setNumA(10.0);
        operator.setNumB(12.0);
        System.out.println(operator.getResult());
    }

}

abstract class Operator{

    public double numA;
    public double numB;

    public abstract double getResult();

    public void setNumA(double numA) {
        this.numA = numA;
    }
    public void setNumB(double numB) {
        this.numB = numB;
    }
}

class AddOperator extends Operator{

    public AddOperator(){
    }
    @Override
    public double getResult(){
        return numA + numB;
    }
}

class MinusOperator extends Operator{

    public MinusOperator(){
    }
    @Override
    public double getResult(){
        return numA - numB;
    }
}

class SimpleFactory{
    public static Operator operator(String type){
        Operator operator = null;
        switch(type){
            case "add":
                operator = new AddOperator();
                break;
            case "minus" : 
                operator =  new MinusOperator();
                break;
        }
        return operator;
    }   
}

簡單工廠模式優缺點:
優點:簡單工廠可以跟據客戶端給定的特殊信息來生產所需要的類,客戶端對於對象的創建細節是不可知的,也沒有必要知道,達到消費與生產分離。
缺點:當我們要開發另一種產品,也就是要再增加一個抽象類,以及增加一些它的繼承類,那麼簡單工廠就要增加判斷生產哪種產品的實例,這就違背“單一職責”;還有如果我要增加一個乘法運算,就要在簡單工廠中增加判斷,並且要重新編譯工廠類,這違背了“開閉原則”。

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