[node.js]ファクトリ


1.工場モデルのメリット

  • オブジェクトの作成と実装を分離できます

  • 柔軟性と制御性の向上

  • オブジェクトを露出せずにオブジェクトを展開または変更できない作成者

  • exmaple
  • const createImage = (value) => {
        if (value.includes('.jpg')) {
          return new JpgImage(value)
        } else if (value.includes('.gif')) {
          return new GifImage(value)
        } else if (value.includes('.png')) {
          return new PngImage(value)
        } else {
          throw new Error('일치하는 확장자가 없습니다.')
        }
    }
    2.強制パッケージング機構

  • JavaScriptにプライベート変数はありません

  • 従って、エンクロージャによりパッケージング

  • exmaple
  • const createPerson = (name) => {
      const privateProperties = {}
      const person = {
        setName: (name) => {
          if (!name) {
            throw new Error('이름이 필요합니다')
          }
          privateProperties.name = name
        },
        getName: () => {
          return privateProperties.name
        },
      }
      person.setName(name)
      return person
    }
    Personオブジェクトはファクトリが返す共通インタフェースであり,外部からアクセスできず,Personオブジェクトが提供するプライベート属性のみで操作できる.
    コンテンツソース
    Node.js設計モード