ホームページ >ウェブフロントエンド >jsチュートリアル >堅牢な Web 開発に不可欠な JavaScript デザイン パターン

堅牢な Web 開発に不可欠な JavaScript デザイン パターン

Barbara Streisand
Barbara Streisandオリジナル
2025-01-22 18:33:10813ブラウズ

ssential JavaScript Design Patterns for Robust Web Development

多作な作家として、アマゾンで私の本を探索することをお勧めします。 継続的なサポートのために、Medium での私の取り組みを忘れずにフォローしてください。ありがとう!皆様のご支援に心より感謝申し上げます!

JavaScript 設計パターンは、堅牢でスケーラブルで保守可能な Web アプリケーションを構築するために不可欠です。 私の経験によれば、これらのパターンを統合すると、コードの品質が大幅に向上し、複雑さが軽減されます。 JavaScript 開発を変革する 7 つの重要な設計パターンを見てみましょう。

Revealing Module Pattern は、明確に定義されたパブリック要素とプライベート要素を含むカプセル化されたコードを作成するための強力な手法です。 このパターンにより、実装の詳細を保護しながら、機能の制御された公開が可能になります。次の例を考えてみましょう:

<code class="language-javascript">const myModule = (function() {
  let privateVar = 'I am private';

  function privateMethod() {
    console.log('This is a private method');
  }

  function publicMethod() {
    console.log('This is a public method');
    console.log(privateVar);
    privateMethod();
  }

  return {
    publicMethod: publicMethod
  };
})();

myModule.publicMethod();</code>

このモジュールは内部変数とメソッドを効果的に隠し、publicMethod のみを公開します。これにより、より適切なカプセル化が促進され、大規模なプロジェクトでの名前の競合が最小限に抑えられます。

Pub/Sub (パブリッシャー/サブスクライバー) パターンは、アプリケーション コンポーネント間の疎結合を実現するために不可欠です。オブジェクトは直接の依存関係なしで通信できるため、柔軟性が高まります。 基本的な実装は次のとおりです:

<code class="language-javascript">const PubSub = {
  events: {},
  subscribe: function(eventName, fn) {
    this.events[eventName] = this.events[eventName] || [];
    this.events[eventName].push(fn);
  },
  publish: function(eventName, data) {
    if (this.events[eventName]) {
      this.events[eventName].forEach(fn => fn(data));
    }
  }
};

PubSub.subscribe('userLoggedIn', user => console.log(`${user} logged in`));
PubSub.publish('userLoggedIn', 'John');</code>

このパターンは、独立したコンポーネントが密接な相互依存関係なしにイベントに応答する必要がある大規模なアプリケーションで特に役立ちます。

Dependency Injection は、モジュールに依存関係を内部的に作成させるのではなく、モジュールに依存関係を提供することで制御を反転するパターンです。これにより、テスト容易性と柔軟性が向上します。 これがイラストです:

<code class="language-javascript">class UserService {
  constructor(httpClient) {
    this.httpClient = httpClient;
  }

  getUser(id) {
    return this.httpClient.get(`/users/${id}`);
  }
}

const httpClient = {
  get: url => fetch(url).then(response => response.json())
};

const userService = new UserService(httpClient);
userService.getUser(1).then(user => console.log(user));</code>

httpClient を挿入すると、テスト目的で HTTP クライアントを簡単に置き換えたりモックしたりできます。

デコレータ パターンは、オブジェクトの構造を変更することなく、オブジェクトに動作を動的に追加します。これは、サブクラス化せずに機能を拡張する場合に有利です。 以下に例を示します:

<code class="language-javascript">function Coffee() {
  this.cost = function() {
    return 5;
  };
}

function MilkDecorator(coffee) {
  const cost = coffee.cost();
  coffee.cost = function() {
    return cost + 2;
  };
}

function WhipDecorator(coffee) {
  const cost = coffee.cost();
  coffee.cost = function() {
    return cost + 1;
  };
}

const myCoffee = new Coffee();
MilkDecorator(myCoffee);
WhipDecorator(myCoffee);

console.log(myCoffee.cost()); // 8</code>

これにより、Coffee クラス自体を変更せずに、「milk」と「whip」を追加できます。

コマンド パターンは、メソッド呼び出しをオブジェクトとしてカプセル化します。これにより、呼び出し元が実行から切り離され、元に戻す/やり直しなどの機能が有効になります。 これがデモンストレーションです:

<code class="language-javascript">class Light {
  turnOn() {
    console.log('Light is on');
  }

  turnOff() {
    console.log('Light is off');
  }
}

class TurnOnCommand {
  constructor(light) {
    this.light = light;
  }

  execute() {
    this.light.turnOn();
  }
}

// ... (rest of the code remains the same)</code>

これは、操作の管理と順序付けに役立ちます。

複合パターンはオブジェクトをツリー状の階層に構造化し、個々のオブジェクトとその構成を均一に扱うことができます。

<code class="language-javascript">class File {
  constructor(name) {
    this.name = name;
  }

  display() {
    console.log(this.name);
  }
}

// ... (rest of the code remains the same)</code>

これは、階層データ構造を表すのに役立ちます。

Mediator パターンはオブジェクト間の通信を管理し、疎結合を促進します。 これは、相互作用するコンポーネントが多数ある複雑なシステムで特に役立ちます。

これらのパターンを効果的に適用するには、アプリケーション固有のニーズを慎重に考慮する必要があります。 過度の使用は避けるべきです。場合によっては、より単純な解決策の方が望ましい場合もあります。 クリーンで読みやすく保守しやすいコードを優先します。

実践的な応用を通じて、これらのパターンの長所と限界についての深い理解を深めます。 これら 7 つの JavaScript 設計パターンをマスターすると、高品質で保守可能なソフトウェアを作成する能力が大幅に向上します。


101 冊

101 Books は、著者 Aarav Joshi が共同設立した AI を活用した出版社です。当社の AI テクノロジーは出版コストを著しく低く抑えており、一部の書籍の価格は $4 という低価格であり、質の高い情報を誰もがアクセスできるようにしています。

Amazon で私たちの本 Golang Clean Code を見つけてください。

最新リリースの最新情報を入手してください。他のタイトルについては、Amazon で Aarav Joshi を検索してください。 特別オファーについては、提供されたリンクを使用してください!

私たちの作品

他のプロジェクトをご覧ください:

インベスターセントラル | 投資家中央スペイン人 | 中央ドイツの投資家 | スマートな暮らし | エポックとエコー | 不可解な謎 | ヒンドゥーヴァ | エリート開発者 | JS スクール


私たちは中程度です

Tech Koala Insights | エポックズ&エコーズワールド | インベスター・セントラル・メディア | 不可解なミステリー 中 | 科学とエポックミディアム | 現代ヒンドゥーヴァ

以上が堅牢な Web 開発に不可欠な JavaScript デザイン パターンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:JavaScript の DOM次の記事:JavaScript の DOM