デザインモードエントリ - シンプルなファクトリパターン

序文

デザインパターンは、私たちはしばしばインタビューの中で遭遇する問題の言葉が、また遭遇した多くの開発です。前に常にデザインモードを学び、その後、書き込みのビットを要約したかったが、他のもので忙しかったし、ついにデザインモードに学び、参考書は「デザインモードの嘘」され、この本は平易に書かれている、私は誰もが見てお勧めします。

シーン記述

乗算、他の操作に加えて、一般的な考え方は、我々は上から下まで問題に対処することである、ブックのサンプルの質問を借りて、プラス2つの数値を算出し、減算、それはいくつかの判決後に2つの数値を引き起こします。

シーン例

二つの数値演算の前に、次のコードに示すように:

package me.xueyao;
/**
 * @author Simon.Xue
 * @date 2019-12-30 22:54
 **/
public class OperationHello {

    public static void main(String[] args) {
        System.out.println(getResult("*", 1, 3));
    }

    public static int getResult(String operationStr, int number1, int number2) {
        int result = 0;
        switch (operationStr) {
            case "+":
                result = number1 + number2;
                break;
            case "-":
                result = number1 - number2;
                break;
            case "*":
                result = number1 * number2;
                break;
            case "/":
                result = number1 / number2;
                break;
        }
        return result;
    }
}

コードはここに4回を判断するが、あなたは他の操作を追加する場合、それが元に基づいて条件判断を追加されます。その後、事業の拡大と条件を決定するために追加することが続行されます。コードの連結あなたがオンラインビジネスは、操作に関連する機能にアクセスすることができない原因と、動作時の問題を修正する場合は、高くなり、他のコンピューティング機能を使用することができ、良い質問を変更する必要があります。

ソリューション

私たちは今、私たちがしたい、最初にすべての、私たちは、単純なファクトリパターンと呼んでいるものを使用追加、減算、乗算、私たちは親クラスの運転操作の.classを作成するので、除算演算は、演算子クラスに属することができます

package me.xueyao;

/**
 * @author Simon.Xue
 * @date 2019-12-30 22:18
 **/
public abstract class Operation {

    private int number1;
    private int number2;

    public int getNumber1() {
        return number1;
    }

    public void setNumber1(int number1) {
        this.number1 = number1;
    }

    public int getNumber2() {
        return number2;
    }

    public void setNumber2(int number2) {
        this.number2 = number2;
    }

    public abstract int getResult();
}

加算、減算、乗算、および除算演算は、我々はOperationAdd.class、OperationSub.class、OperationMul.class、OperationDiv.class 4つのサブクラスは、親クラス操作Operation.class、計算方法を継承して作成されました。

package me.xueyao;

/**
 * @author Simon.Xue
 * @date 2019-12-30 22:22
 **/
public class OperationAdd extends Operation {

    @Override
    public int getResult() {
        return getNumber1() + getNumber2();
    }
}
package me.xueyao;

/**
 * @author Simon.Xue
 * @date 2019-12-30 22:22
 **/
public class OperationSub extends Operation {

    @Override
    public int getResult() {
        return getNumber1() - getNumber2();
    }
}
package me.xueyao;

/**
 * @author Simon.Xue
 * @date 2019-12-30 22:25
 **/
public class OperationMul extends Operation {
    @Override
    public int getResult() {
        return getNumber1() * getNumber2();
    }
}
package me.xueyao;

/**
 * @author Simon.Xue
 * @date 2019-12-30 22:26
 **/
public class OperationDiv extends Operation {
    @Override
    public int getResult() {
        return getNumber1() / getNumber2();
    }
}

私たちは計算方法を使用する場合は、あなただけがそのオブジェクトを作成する必要があり、その後、計算を実行し、次の2つの数字を計算することができますが、今、各操作のためのオブジェクトを作成する方法でなければならない問題があります。親クラスのオブジェクトを公開する示されているように、我々は、ファクトリクラス、必要なオブジェクトを作成するためのクラスファクトリは、次のコードを作成することができます

package me.xueyao;

/**
 * @author Simon.Xue
 * @date 2019-12-30 22:30
 **/
public class OperationFactory {

    public static Operation createOperation(String operationStr) {
        Operation operation = null;

        switch (operationStr) {
            case "+":
                operation = new OperationAdd();
                break;
            case "-":
                operation = new OperationSub();
                break;
            case "*":
                operation = new OperationMul();
                break;
            case "/":
                operation = new OperationDiv();
                break;
        }
        return operation;
    }
}

概要

シンプルなファクトリパターンが比較的単純なパターンのデザインパターンですが、それはすべての余分なAが必要である、我々はかなり良い上にして、一般的には、クラスを作成する必要があります。記事質問があれば、私に連絡してください。

おすすめ

転載: blog.51cto.com/flowstone/2463235