【デザインパターン】JavaScriptの出現パターンの応用と実践

大鹏
リリース: 2020-08-11 17:11:50
オリジナル
192 人が閲覧しました

は別名面モード、外部ビューモード外部ビューモードは、子システム内のグループインターフェイスを提供し、上位層インターフェイスのグループをより使いやすく定義します。

最適なフィールドバックモードの利点は非常に明白であり、内部システムのゲストへの影響により、ゲストのアクセスが減少し、親和性も低下します。虽然用户当然、コードの変更も必要ですが、多くの場合、追加の変更だけで済みます。同時に、外部モードは、ユーザーが直接のシステムを使用して、より追加の機能を使用することを妨げることはありません。 、外部設定モードには何か問題がありますか?ただし、外部設定モードにはエントリが用意されていますが、ユーザーが直接使用する子システムを阻止することはできません。したがって、外部モードを使用すると、同時にサブシステムも保護されるようになります。では、どのような場合に外部モードを使用するのが適切でしょうか? 私たちの使用者が使用する環境がすべて同様である場合、しかし私たちの子システムが依然として非常に複雑である場合、外部を保護し、トラフィックをより良くすることを検討できます。外部モードは、ゲスト プログラムやサービス プログラムを分離する必要がある場合にも、サブ システムの独立性を高めるために使用されます。性和性和可移植性。当当需要一一层次结构的系统、使用使用外观模式每每一一的复杂の内部实现类

xclass FetchMusic {  get resources() {    return [      { id: 1, title: "The Fragile" },      { id: 2, title: "Alladin Sane" },      { id: 3, title: "OK Computer" },    ];  }  fetch(id) {    return this.resources.find((item) => item.id === id);  }}class GetMovie {  constructor(id) {    return this.resources.find((item) => item.id === id);  }  get resources() {    return [      { id: 1, title: "Apocalypse Now" },      { id: 2, title: "Die Hard" },      { id: 3, title: "Big Lebowski" },    ];  }}const getTvShow = function (id) {  const resources = [    { id: 1, title: "Twin Peaks" },    { id: 2, title: "Luther" },    { id: 3, title: "The Simpsons" },  ];  return resources.find((item) => item.id === id);};const booksResource = [  { id: 1, title: "Ulysses" },  { id: 2, title: "Ham on Rye" },  { id: 3, title: "Quicksilver" },];
ログイン後にコピー

外部观类:内部类建立简洁统一の外部观界用

xxxxxxxxxxconst TYPE_MUSIC = "music";const TYPE_MOVIE = "movie";const TYPE_TV = "tv";const TYPE_BOOK = "book";class CultureFacade {  constructor(type) {    this.type = type;  }  _findMusic(id) {    const db = new FetchMusic();    return db.fetch(id);  }  _findMovie(id) {    return new GetMovie(id);  }  _findTVShow(id) {    return getTvShow(id);  }  _findBook(id) {    return booksResource.find((item) => item.id === id);  }  get _error() {    return { status: 404, error: `No item with this id found` };  }  _tryToReturn(func, id) {    const result = func.call(this, id);    return new Promise((ok, err) =>      !!result && JSON.stringify(result) !== "{}"        ? ok(result)        : err(this._error)    );  }  get(id) {    switch (this.type) {      case TYPE_MUSIC: {        return this._tryToReturn(this._findMusic, id);      }      case TYPE_MOVIE: {        return this._tryToReturn(this._findMovie, id);      }      case TYPE_TV: {        return this._tryToReturn(this._findTVShow, id);      }      case TYPE_BOOK: {        return this._tryToReturn(this._findBook, id);      }      default: {        throw new Error("No type set!");      }    }  }}
ログイン後にコピー
客户调用:不管音楽、映画、テレビ、書籍内部子系统です么样的,都可使用同様の方法で実行される。 当然のことながら、外部ビューモードは、ほとんどの企業がマイクロサービスを使用する公開モードを使用しており、外部ビューモードはそのような送信モードによく適合する。接口设计,就相当開始タスクの半分を完了した場合に限り、そのコードはここに到達することはありません。実際の開発では、インターフェイスの可用性と使いやすさを「ある程度」調整する必要がありますが、特定の場合には、より簡単に使用できるようにするために、冗長インターフェイスの提供が許可されます。使用可能なインターフェイス。

以上が【デザインパターン】JavaScriptの出現パターンの応用と実践の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
1
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!