首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >typescript: model

typescript: model

作者头像
geovindu
发布2026-06-18 21:37:05
发布2026-06-18 21:37:05
620
举报
代码语言:javascript
复制
/**
 * TypeScript 实体类 Model
 * https://stackoverflow.com/questions/12827266/get-and-set-in-typescript
 * https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines
 */
class UserInfo {
    id!: number;
    userName!: string;
    email!: string;
  }

  class Car { //export

    id!: number;
    seats!: number;
    engine!: string;

   /* constructor(id, seats,engine){
        this.id = id;
        this.seats = seats;
        this.engine=engine;
    }*/

    public  getId(): number { //get
        return this.id;
    }

    public  getSeats(): number { //get
        return this.seats;
    }

    public  getEngine(): string { //get
        return this.engine;
    }

    public setSeats(seats: number) //set
    {
        this.seats=seats;
    }

    public setEngine(engine: string) //set
    {
        this.engine=engine;
    }

}
  
/**
 * 继承
 */
class Motorcycle extends Car
{
   /*  id!: number;
    seats!: number;
    engine!: string;

   constructor(id, seats,engine){
        this.id = id;
        this.seats = seats;
        this.engine=engine;
    }

    public  getId(): number { //get
        return this.id;
    }

    public  getSeats(): number { //get
        return this.seats;
    }

    public  getEngine(): string { //get
        return this.engine;
    }

    public setSeats(seats: number) //set
    {
        this.seats=seats;
    }

    public setEngine(engine: string) //set
    {
        this.engine=engine;
    }*/

}
/*
  interface DuBuilder<Car>()
    .id(1)
    .setSeats("")
    .setEngine("")
    .build();
*/


interface Builder {
    setSeats(seats: number): this;
    setEngine(engine: string): this;

  }
  


export class CarBuilder implements Builder {
    private car: Car;
  
    constructor() {
      this.car = new Car();
    }
  
    public setSeats(seats: number): this {
      //this.car.setSeats(seats);
    
      this.car.setSeats(seats);
      return this;
    }
  
    public setEngine(engine: string): this {
      this.car.setEngine(engine);
      return this;
    }
  
    public getResult(): Car {
      return this.car;
    }
  }
  
  class DuDirector {

    public buildFerrari(): Car {
      return new CarBuilder().setSeats(2).setEngine("V-12").getResult();
    }
  
    public buildToyota(): Car {
      return new CarBuilder().setSeats(7).setEngine("V-6").getResult();
    }
  
    public buildHonda(): Motorcycle {
      return new MotorcycleBuilder().setSeats(2).setEngine("V-4").getResult();
    }
  
    public buildYamaha(): Motorcycle {
      return new MotorcycleBuilder().setSeats(1).setEngine("V-2").getResult();
    }
  }

/* */
class MotorcycleBuilder implements Builder {

    private motorcycle: Motorcycle;
  
    constructor() {
      this.motorcycle = new Motorcycle();
    }
  
    public setSeats(seats: number): this {
      this.motorcycle.setSeats(seats);
      return this;
    }
  
    public setEngine(engine: string): this {
      this.motorcycle.setEngine(engine);
      return this;
    }
  
    public getResult(): Motorcycle {
      return this.motorcycle;
    }
  }
 
/**/
const directorBu = new DuDirector();
directorBu.buildFerrari();
directorBu.buildToyota();

directorBu.buildHonda();
directorBu.buildYamaha();

const car = new CarBuilder().setSeats(2).setEngine("V-12").getResult();

const motorcycle = new MotorcycleBuilder()
  .setSeats(2)
  .setEngine("V-4")
  .getResult();
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档