1. 簡單工廠模式

第一章 代碼無錯就是優(yōu)?-簡單工廠模式

所有編程初學(xué)者都會有這樣的問題,就是碰到問題就直覺地用計算機能夠理解的邏輯來描述和表達(dá)待解決的問題及具體的求解過程,這其實是用計算機的方式去思考。但這樣的思維卻使得我們的程序只為滿足實現(xiàn)當(dāng)前的需求,程序不容易維護(hù),不容易擴(kuò)展,更不容易復(fù)用,從而達(dá)不到高質(zhì)量代碼的要求。

簡單工廠模式

就是建立一個工廠類,對實現(xiàn)了同一抽象類的一些類進(jìn)行實例的創(chuàng)建。簡單工廠模式的實質(zhì)是由一個工廠類根據(jù)傳入的參數(shù),動態(tài)決定應(yīng)該創(chuàng)建哪一個產(chǎn)品類(這些產(chǎn)品類繼承自一個父類或接口)的實例。

簡單工廠模式

1. 統(tǒng)一的抽象類

/**
 * 操作的抽象類
 */
public abstract class Operation {

    public double numberA;

    public double numberB;

    public abstract double result();

}

2. 加法類

/**
 * 加法
 */
public class OperationAdd extends Operation{

    @Override
    public double result() {
        return numberA + numberB;
    }

}

3. 減法類

/**
 * 減法
 */
public class OperationSub extends Operation {

    @Override
    public double result() {
        return numberA - numberB;
    }

}

4. 乘法類

/**
 * 乘法
 */
public class OperationMul extends Operation {

    @Override
    public double result() {
        return numberA * numberB;
    }

}

5. 除法類

/**
 * 除法
 */
public class OperationDiv extends Operation {

    @Override
    public double result() {
        if (numberB == 0) {
            throw new RuntimeException("divided by 0");
        }
        return numberA / numberB;
    }

}

6. 簡單工廠類

/**
 * 操作的工廠類
 */
public class OperationFactory {

    public static Operation createOperation(char operator) {
        Operation operation = null;
        switch (operator) {
            case '+':
                operation = new OperationAdd();
                break;
            case '-':
                operation = new OperationSub();
                break;
            case '*':
                operation = new OperationMul();
                break;
            case '/':
                operation = new OperationDiv();
                break;
            default:
                throw new RuntimeException("unsupported operation");
        }
        return operation;
    }

}

7. 使用工廠方法生成實例完成運算操作

/**
 * 使用工廠方法生成實例完成運算操作
 */
public class Calculator {

    public static void main(String[] args) {
        Operation operation;
        char operator;

        operator = '+';
        operation = OperationFactory.createOperation(operator);
        operation.numberA = 10;
        operation.numberB = 100;

        System.out.println(operation.result());
    }

}

1.活字印刷,面向?qū)ο?/h4>
  • 要改,只需更改要改之字,此為可維護(hù)
  • 這些字并非用完這次就無用,完全可以在后來的印刷中重復(fù)使用,此乃可復(fù)用
  • 此時若要加字,只需另刻字加入即可,這是可擴(kuò)展
  • 字的排列其實可能是豎排可能是橫排,此時只需將活字移動就可做到滿足排列需求,此時靈活性好

火藥,指南針,造紙術(shù)都是從無到有,從未知到發(fā)現(xiàn)的偉大發(fā)明,而活字印刷僅僅是從刻板印刷到活字印刷的一次技術(shù)上的進(jìn)步。

中國古代的四大發(fā)明,另三種應(yīng)該都是科技的進(jìn)步,偉大的創(chuàng)造或發(fā)現(xiàn),而唯有活字印刷,實在是思想的成功,面向?qū)ο蟮膭倮?/p>

通過封裝,繼承,多態(tài)把程序的耦合度降低。
設(shè)計模式使得程序更加的靈活,容易修改,并且易于復(fù)用。

編程有一原則:就是用盡可能的辦法去避免重復(fù)
讓業(yè)務(wù)邏輯和界面邏輯分開,讓它們之間的耦合度降低。只有分離開,才可以達(dá)到容易維護(hù)和擴(kuò)展。

簡單工廠模式

到底要實例化誰,將來會不會增加實例化的對象,比如增加開根運算,這是很容易變化的地方,應(yīng)該考慮用一個單獨的類來做這個創(chuàng)造實例的過程,這就是工廠。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 設(shè)計模式匯總 一、基礎(chǔ)知識 1. 設(shè)計模式概述 定義:設(shè)計模式(Design Pattern)是一套被反復(fù)使用、多...
    MinoyJet閱讀 4,073評論 1 15
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,623評論 18 399
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 12,299評論 6 13
  • 1.接口基礎(chǔ)回顧 設(shè)計模式六大原則,其中依賴倒轉(zhuǎn)原則,強調(diào)我們應(yīng)該面向接口編程,那什么是接口?接口的作用? 接口如...
    孟婆湯不解渴閱讀 901評論 0 3
  • 曾幾何時 驟然被觸及 直面頭脹臉赤 抑或是兩行清淚 快變的時代 似乎不允許感動 回歸本真 感情縱橫流溢 須無可厚非...
    寂寞時聽雨閱讀 139評論 0 0

友情鏈接更多精彩內(nèi)容