[デザインモード] ------ビルダーモード(テンプレートモードと比較)

ビルダーモード

ビルダーモードは、実行順序が同じで実装が異なる実行シーケンスのクラスを構築し、最終的に異なる効果を生成することです。

たとえば、エッセイを書く。

エッセイを書くたびに、大まかにタイトルを書き、冒頭を書き、内容を書き、最後を書きます。

public abstract class Builder {

    abstract String 写标题();

    abstract String 写开头();

    abstract String 写内容();

    abstract String 写结尾();
}

たとえば、春のツアーで記事を書きたい場合は、タイトルの書き込み、冒頭の書き込み、コンテンツの書き込み、および末尾の書き込みに対応するメソッドを実装します。

public class 春游作文 extends Builder {

    @Override
    String 写标题() {
        return "春游";
    }

    @Override
    String 写开头() {
        return "今天,我们几个人去春游。";
    }

    @Override
    String 写内容() {
        return "我们去了哪里,看到什么风景,怎么怎么样。";
    }

    @Override
    String 写结尾() {
        return "啊!春游真好!真有意义啊!";
    }
}

別の映画を書く

public class 看电影作文 extends Builder {
    @Override
    String 写标题() {
        return "看电影";
    }

    @Override
    String 写开头() {
        return "今天,我们几个人一起去看电影。";
    }

    @Override
    String 写内容() {
        return "去哪个电影院,看什么电影,有什么感触。。。";
    }

    @Override
    String 写结尾() {
        return "啊!电影真好看,下次还想看!";
    }
}

最後に、司令官(学生としても理解できます)に来ると、エッセイを書く方法があり、対応する作曲サブクラスが渡される限り、対応する作曲を書くことができます(これは、実際に試験指向の教育の感覚に似ています) 、すべてのフレームの準備が整っています。各フレームの内容を完全にする必要があります)。

public class Director {
    public String 写作文(Builder builder){
        String 标题 = builder.写标题();
        String 开头 = builder.写开头();
        String 内容 = builder.写内容();
        String 结尾 = builder.写结尾();
        return 标题 + "\n" + 开头 + "\n" + 内容 + "\n" + 结尾;
    }
}

テストする

public class TestMain {

    public static void main(String[] args) {

        Director director = new Director();
        String 春游作文 = director.写作文(new 春游作文());
        System.out.println(春游作文);

        System.out.println("===================================");
        System.out.println("============下一篇作文===============");
        System.out.println("====================================");

        String 看电影作文 = director.写作文(new 看电影作文());
        System.out.println(看电影作文);
    }
}

最終的な印刷結果:

春游
今天,我们几个人去春游。
我们去了哪里,看到什么风景,怎么怎么样。
啊!春游真好!真有意义啊!
===================================
============下一篇作文===============
====================================
看电影
今天,我们几个人一起去看电影。
去哪个电影院,看什么电影,有什么感触。。。
啊!电影真好看,下次还想看!

ビルダーモードとテンプレートモードの比較

実際、これら2つのデザインパターンは同じ意味だと思います。個別に言う必要はありません。

インターネット上ではさまざまな意見がありますが、その多くは2つを個別に議論することを強く求めています。
しかし、議論の終わりに、それは単にそれを引き継いでいるのではないでしょうか?
たとえば、上記の例で、最後のDirectorクラスのメソッドをビルダーに配置すると、テンプレートモードではないですか。

したがって、私は一般的にこれら2つをデザインパターンと見なします。これは、テンプレートビルダーパターンとも呼ばれます。

専門的に言えば、将軍は次のステップに分かれています

1.親クラスは一連のメソッドを定義します
。2.親クラスで指定された順次メソッドまたは新しいクラスを作成する順次メソッドは、各メソッド間の呼び出しシーケンスを定義します。
3.子クラスは親クラスを継承し、対応するメソッドを書き換えます。
4.サブクラスごとに順次メソッドを呼び出すと、さまざまな効果が得られますが、全体的な実行順序は制御できます。

まあ、あなたが区別したい場合:

ビルダーモードは、新しいクラスを作成するシーケンスメソッドを使用する2番目のステップです。メソッド入力パラメーターは、
上記の2番目のステップであるサブクラステンプレートモードです。親クラスはシーケンスメソッドを指定し、サブクラスは呼び出しを指定します

まとめ

私たちは開発に適応でき、勝つ機会がないことを願っています。

本当に素晴らしい開発でした。彼がコーディングしているとき、彼は特定のデザインパターンを明確に使用しましたが、どのモードであるかわからず、それが最も適切な方法であることを知っていました。統合は完了です。

そして、あらゆる場所でデザインパターンを使用し、あらゆる場所で使用し、さまざまなデザインパターンを区別するためにエネルギーを浪費したい人は、いくつかの動きを学ぶだけであり、内なる力の領域からはかけ離れています。

もちろん、上記の2種類の人は、練習したくない人や内部スキルがない人よりも何千倍も強力です。

元の記事203件を公開 賞賛された186件 210,000回

おすすめ

転載: blog.csdn.net/java_zhangshuai/article/details/105108055