728x90
1๋ฒ ๋ฐฉ์
interface Shoe {
purpose: string;
}
class BalletFlat implements Shoe {
purpose = "dancing";
}
class Boot implements Shoe {
purpose = "woodcutting";
}
class Sneaker implements Shoe {
purpose = "walking";
}
class ShoeFactory {
static create(Type: "balletFlat" | "boot" | "sneaker"): Shoe {
switch (Type) {
case "balletFlat":
return new BalletFlat();
break;
case "boot":
return new Boot();
break;
case "sneaker":
return new Sneaker();
break;
}
}
}
let boot = ShoeFactory.create("boot");
let balletFlat = ShoeFactory.create("balletFlat");
let sneaker = ShoeFactory.create("sneaker");
console.log(boot.purpose);
console.log(balletFlat.purpose);
console.log(sneaker.purpose);
2๋ฒ ๋ฐฉ์
type Shoe = {
//ํ์
๋์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํด๋ ๋จ
purpose: string;
};
class BalletFlat implements Shoe {
purpose = "dancing";
}
class Boot implements Shoe {
purpose = "woodcutting";
}
class Sneaker implements Shoe {
purpose = "walking";
}
let ShoeFactory = {
create(Type: "balletFlat" | "boot" | "sneaker"): Shoe {
switch (Type) {
case "balletFlat":
return new BalletFlat();
case "boot":
return new Boot();
case "sneaker":
return new Sneaker();
}
},
};
let boot = ShoeFactory.create("boot");
let balletFlat = ShoeFactory.create("balletFlat");
let sneaker = ShoeFactory.create("sneaker");
console.log(boot.purpose); //woodcutting
console.log(balletFlat.purpose); //dancing
console.log(sneaker.purpose); //walking
728x90