Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Car {
- parts: string[] = []
- }
- interface ICarBuilder {
- addWheels(): this
- addEngine(): this
- getResult(): Car
- }
- class SportCarBuilder implements ICarBuilder {
- product: Car
- constructor() {
- this.product = new Car()
- }
- addWheels() {
- this.product.parts.push('Колёса')
- return this
- }
- addEngine() {
- this.product.parts.push('Мотор')
- return this
- }
- getResult() {
- return this.product
- }
- }
- class MiniCarBuilder implements ICarBuilder {
- product: Car
- constructor() {
- this.product = new Car()
- }
- addWheels() {
- this.product.parts.push('колёсики')
- return this
- }
- addEngine() {
- this.product.parts.push('моторчик')
- return this
- }
- getResult() {
- return this.product
- }
- }
- class Director {
- static construct(builder: ICarBuilder) {
- return builder
- .addWheels()
- .addEngine()
- .getResult()
- }
- }
- const product1 = Director.construct(new SportCarBuilder())
- console.log(product1.parts)
- const product2 = Director.construct(new MiniCarBuilder())
- console.log(product2.parts)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement