Есть ли проблема с моей реализацией шаблона модуля? - PullRequest
0 голосов
/ 07 августа 2020

Я написал следующее как реализацию паттерна модуля:

let myClass = function (publicName, privateName)
{
  this.publicVar = publicName;
  let privateVar = privateName;

  this.publicMethod = function ()
  {
    return this.publicVar;
  }
  this.getPublic = function ()
  {
    return this.publicMethod();
  }
  this.setPublic = function (newPublicName)
  {
    this.publicVar = newPublicName;
  }
  this.getPrivate = function ()
  {
    return privateVar;
  }
  this.setPrivate = function (newPrivateName)
  {
    privateMethod(newPrivateName);
  }
  let privateMethod = function (newPrivateName)
  {
    privateVar = newPrivateName;
  }

  return this;
}

let a = new myClass('public A', 'private A');
let b = new myClass('public B', 'private B');

// A
console.log(a.publicVar);
console.log(a.publicMethod());

console.log(a.getPrivate());
a.setPrivate('private A-2');
console.log(a.getPrivate());

console.log(a.getPublic());
a.setPublic('public A-2');
console.log(a.getPublic());

// B
console.log(b.publicVar);
console.log(b.publicMethod());

console.log(b.getPrivate());
b.setPrivate('private B-2');
console.log(b.getPrivate());

console.log(b.getPublic());
b.setPublic('public B-2');
console.log(b.getPublic());

Он отличается от примеров, которые я обычно могу найти в Интернете, поскольку не использует IIFE и не использует конструктор как таковой ...

Есть ли проблема с тем, что я сделал?

Я лично не вижу в этом ничего плохого ... Кажется, что методы и переменные инкапсулируются должным образом.

ПРИМЕЧАНИЕ: я также понимаю, что многие методы не нужны, я просто хотел проверить несколько вещей, чтобы увидеть, смогу ли я сломать его.

...