JavaScript 23種類の設計モードの5建造者モード

14670 ワード

JavaScript 23種類の設計モードの5建造者モード
  • 概念と特徴
  • 構造と実装
  • アプリケーションシーン
  • アプリケーション例
  • 総括
  • 概念と特徴
    コンセプト:複雑なオブジェクトの構造とその表現を分離します.同じ構築過程で異なる表現を作成することができます.複雑なオブジェクトを簡単なオブジェクトに分解して、一歩ずつ構築していきます.変わることと変わらないことを分離して、製品の構成部分は不変で、しかしすべての部分は柔軟に選択することができるのです.
    特徴:
  • 各具体的な建築者は互いに独立して、システムの開拓に有利です.
  • クライアントは、製品の内部構成の詳細を知る必要がなく、詳細リスクを制御するのに便利である.
  • 製品の構成部分は同じで、使用範囲を制限しています.
  • 製品の内部構造が複雑であれば、多くの建築者が増加します.
  • 構造と実現
    建築者モードは製品、抽象的な建築者、具体的な建築者、指揮者の4つの要素から構成される.製品:複数の構成部品を含む複雑な対象.抽象建築者:製品の各サブパーツの抽象的な方法と製品に戻る方法.具体的な建設者:建設者インターフェースを実現し、複雑な製品の各部品の具体的な方法を完成する.指挥者:建筑者のオブジェクト中の部品构造と组み立て方法を呼び出して、复雑なオブジェクトの作成を完了します.指揮者の中には製品の具体的な情報が含まれていません.
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <script>
        //  -        (  ,   ,   )
        function LivingRoom(wall,tv,sofa) {
            var wall,tv,sofa;
            this.setWall = function (wall) {
                this.wall = wall;
            };
            this.setTv = function (tv) {
                this.tv = tv;
            };
            this.setSofa = function (sofa) {
                this.sofa = sofa;
            };
            this.show = function () {
                console.log(this.wall,this.tv,this.sofa)
            }
        }
        //     -                    
        function Builder() {
            this.product = new LivingRoom();
            this.getResult = function () {
                return this.product;
            }
        }
        Builder.prototype.buildWall = function () {}
        Builder.prototype.buildTv = function () {}
        Builder.prototype.buildSofa = function () {}
        //     
        function ConcreteBuilder() {}
        ConcreteBuilder.prototype = new Builder();
        ConcreteBuilder.prototype.buildWall = function (){
            this.product.setWall("  ");
            console.log(this.product)
        };
        ConcreteBuilder.prototype.buildTv = function (){
            this.product.setTv("    ");
        };
        ConcreteBuilder.prototype.buildSofa = function (){
            this.product.setSofa("    ");
        };
        //   
        function Director(builder) {
            //      
           this.getProduct = function () {
               //  
               builder.buildWall();
               //    
               builder.buildTv();
               //    
               builder.buildSofa();
               //    
               return builder.getResult();
           }
        }
        var concreteBuild = new ConcreteBuilder();
        var director= new Director(concreteBuild);
        var product = director.getProduct();
        product.show();
    </script>
    </body>
    </html>
    
    アプリケーションシーン
  • は、複数の部品からなるオブジェクトを作成する必要がある.
  • 製品の作成と表示は独立しています.
  • アプリケーションのインスタンス
    しばらく
    締め括りをつける
    建築者モードとは組み立ての概念であり、異なる部品から複雑な製品に組み立てられています.ただし、部品同士の構造順序は安定しています.
    工場の方法と違って、建築者のモードがもっと重視しているのは部品の組み立て過程です.工場の方法が重視しているのは部品の作成過程です.
    建築者のモードを使う時、製品の種類が具体的な建築者だけを必要とするなら、抽象的な建築者と指揮者を省略することができます.