abstract class Builder {
build() {
this.test();
this.lint();
this.assemble();
this.deploy();
}
protected abstract test(): void;
protected abstract lint(): void;
protected abstract assemble(): void;
protected abstract deploy(): void;
}
class AndroidBuilder extends Builder {
protected test() {
console.log("Running android tests");
}
protected lint() {
console.log("Linting the android code");
}
protected assemble() {
console.log("Assembling the android build");
}
protected deploy() {
console.log("Deploying android build to server");
}
}
class IosBuilder extends Builder {
protected test() {
console.log("Running ios tests");
}
protected lint() {
console.log("Linting the ios code");
}
protected assemble() {
console.log("Assembling the ios build");
}
protected deploy() {
console.log("Deploying ios build to server");
}
}