Singleton 的寫法#
class AnimalManager {
constructor() {
this.init()
}
init() {
this.name = 'AnimalManager'
}
}
export default new AnimalManager()
class AnimalManager {
constructor() {
if (Animal.instance) {
return Animal.instance
}
this.init()
Animal.instance = this
}
init() {
this.name = 'AnimalManager'
}
}
export default AnimalManager
// typescript 可以用靜態工廠模式 (Static Factory Pattern)
class AnimalManager {
private static instance: AnimalManager;
public static getInstance(): AnimalManager {
if (!AnimalManager.instance) {
AnimalManager.instance = new AnimalManager();
}
return AnimalManager.instance;
}
}
if 的寫法#
// Good
if (dog) {
doSomething()
create(dog)
}
// Good
if (dog) create(dog)
// Bad
dog && create(dog)
get/set in class#
// Bad
class Dog {
#dogname
constructor() {
this.#dogname = 'Droopy'
}
get dogName() {
return this.#dogname
}
set dogName(name) {
// Not doing anything else.
this.#dogname = name
}
}
// Good
class Dog {
constructor() {
this.dogname = 'Droopy'
}
}