Java のビルダー パターンのケースを分析する

王林
リリース: 2023-05-10 10:40:15
転載
1425 人が閲覧しました

ビルダー パターンとは

ビルダー パターンの定義: 複雑なオブジェクトの構築をその表現から分離し、同じ構築プロセスで異なる表現を作成できるようにする設計を指します。パターンはと呼ばれます。ビルダーパターン。複雑なオブジェクトを複数の単純なオブジェクトに分割し、それを段階的に構築します。これは、変更と不変性を区別します。つまり、製品のコンポーネントは変更されませんが、各部分は柔軟に選択できます。

利点

1. 優れたカプセル化、構造とプレゼンテーションの分離。

2. スケーラビリティが高く、特定のビルダーがそれぞれ独立しているため、システムの分離に役立ちます。

3. クライアントは製品の内部構成を詳細に知る必要がなく、他のモジュールに影響を与えることなく作成プロセスを段階的に改良していくことができるため、細かなリスクの管理が容易になります。

欠点

1. 製品のコンポーネントは同じである必要があるため、使用範囲が制限されます。

2. 製品の内部変更が複雑な場合、製作者も同時に修正を行う必要があり、将来のメンテナンスコストが高くなります。

知識ポイント

ビルダー モデルとファクトリ モデルには焦点が異なります。ビルダー モデルはコンポーネントの組み立てプロセスに重点を置き、ファクトリ メソッド モデルはコンポーネントの作成プロセスに重点を置きます。しかし、両方を一緒に使用することもできます。

ビルダー パターンの実装

ケース: ミラクル ドクター Doudou Alchemy

製品の役割 (製品): ピル

抽象ビルダー (ビルダー): 抽象ダンファン

コンクリート ビルダー: コンクリート ダンファン

監督: ミラクル ドクター ドゥドゥ

ミラクル ドクター ドゥドゥは 9 ターンのエリクサーとタイ ヴォイド ディバイン ピルを精製します

注: 保存するには恐れ入りますが、ここで紹介する錠剤レシピは錠剤の名前と効果のみを記載しており、材料等は記載しておりません。

Elixir

エリクサー クラスは、エリクサーの名前と効果を宣言します。

public class Dan {
    /* cailiao 丹药的名称
           danhuo 丹药的效果*/
    private String name;
    private String xiaoguo;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getXiaoguo() {
        return xiaoguo;
    }

    public void setXiaoguo(String xiaoguo) {
        this.xiaoguo = xiaoguo;
    }
}
ログイン後にコピー

Abstract elixir

抽象クラス、新しいエリクサー オブジェクトは、次の 2 つを宣言します。抽象的な方法としては、エリクサーに名前を付けてその効果を付与する方法と、エリクサーを生成する方法があります。

//抽象丹方
abstract class DanFang {
    Dan dan = new Dan();

    public abstract void name();

    public abstract void xiaoguo();

    public Dan getDan() {
        return dan;
    }

}
ログイン後にコピー

9 ターン エリクサーの処方箋

特定の処方箋クラスは、処方箋クラスを継承し、2 つの抽象メソッドを実装します。

//九转仙丹丹方
public class JiuZhuan extends DanFang {

    @Override
    public void name() {
        dan.setName("九转仙丹");
    }

    @Override
    public void xiaoguo() {
        dan.setXiaoguo("原地成仙");
    }
}
ログイン後にコピー

Taixuhuashendandanfang

特定の Danfang クラスは Danfang クラスを継承し、2 つの抽象メソッドを実装します。

//太虚化神丹丹方
public class Taixu extends DanFang {
    @Override
    public void name() {
        dan.setName("太虚化神丹");
    }

    @Override
    public void xiaoguo() {
        dan.setXiaoguo("意念化神");
    }
}
ログイン後にコピー

神药豆豆

エリクサーの属性、パラメータを持つコンストラクターメソッド、錬金術メソッドを宣言します。

public class DouDou {
    private final DanFang danLu;

    public DouDou(DanFang danLu) {
        this.danLu = danLu;
    }

    //炼丹方法
    public Dan lian() {
        //放入材料
        danLu.name();
        //释放丹火
        danLu.xiaoguo();
        //成丹
        return danLu.getDan();
    }
}
ログイン後にコピー

テスト

2つの錠剤を精製しています。

rreeee

Java のビルダー パターンのケースを分析する

以上がJava のビルダー パターンのケースを分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート