私人和公共课程版本

时间:2019-05-31 10:40:06

标签: javascript architecture

我正在用JavaScript构建自己的库,并且我在考虑最终用户将如何使用它。通常,我将所有私有和公共功能放在一起,但是每当我这样做时,感觉随着班级的增加,班级变得越来越难以驾驭。我有一个尝试将它们分成单独的类的想法,我想知道这是否可以完成,它叫什么?

更具体地说,它看起来像这样。

ClassABase-这将包含所有主要代码/私有代码,我不希望我的用户直接访问以便正确使用该类。

ClassA继承自ClassABase-ClassA继承了基类的所有内容,但随后还将填充所有公开的方法。

我想我只是想要一些反馈,以了解是否已经完成,或者是否应该将所有内容都保留在原始类中。

1 个答案:

答案 0 :(得分:1)

1)创建私有方法

  • 您始终可以检查调用方是否是同一类的实例。

2)创建必须被覆盖的方法

  • 在父类中引发一个错误,然后在子类中重写该错误。

您无法在Javascript中创建必须被覆盖的抽象方法,但是您可以阻止调用这些方法,直到在子类中不覆盖它们为止

let Parent = class Parent {
	constructor () {
	
	}

	parentMethod () {
		throw new Error('Parent method cannot be called');
	}

	parentPrivateMethod () {
		if(this instanceof Parent) {
			console.log('parent can call me');
		}
		throw new Error('I am private');
	}

	parentPublicMethod () {
		console.log('I am public');
		this.parentPrivateMethod();
	}
}

class Child extends Parent {
	constructor () {
		super();
	}

	parentMethod () {
		console.log('I can be called');
	}
}

let child = new Child();
child.parentMethod();
console.log('--------------');
child.parentPublicMethod();
console.log('--------------');
child.parentPrivateMethod();