Olá!
Percebi que nesta aula tivemos que copiar um código e passar pra outra classe, sendo que poderiamos ter feito isso apenas uma vez como boa prática da maioria das linguagens de programação.
As minhas classes ficaram assim: Subscrivable
export default class Subscrivable {
constructor() {
this._inscritos = [];
}
subscribe(func) {
this._inscritos.push(func);
}
unsubscribe(func) {
this._inscritos = this._inscritos.filter(f => f !== func);
}
notificar(list) {
this._inscritos.forEach(func => func(list));
}
}
Categorias
import Subscrivable from "./Subscrivable";
export default class Categorias extends Subscrivable {
constructor() {
super();
this.categorias = []
}
adiconarCategoria(novaCategoria) {
this.categorias.push(novaCategoria);
this.notificar(this.categorias);
}
}
Notas (ArrayDeNotas)
import Subscrivable from "./Subscrivable";
export default class Notas extends Subscrivable {
constructor() {
super();
this.notas = [];
}
adicionarNota(titulo, text, categoria) {
const novaNota = new Nota(titulo, text, categoria);
this.notas.push(novaNota);
this.notificar(this.notas);
}
apagarNota(index) {
this.notas.splice(index, 1);
this.notificar(this.notas);
}
}
class Nota {
constructor(titulo, text, categoria) {
this.titulo = titulo;
this.text = text;
this.categoria = categoria;
}
}
Funciona da mesma forma, a unica diferença é que temos menos lugares para alterar e ainda o código fica mais limpo.