ts 工厂模式

工厂模式: 在创建对象时不会对客户端暴露创建逻辑

interface Shape {
  draw();
}
class Circle implements Shape {
  draw() {

  }
}

class Square implements Shape {
  draw() {

  }
}

class Rectangle implements Shape {
  draw() {

  }
}


// let c = new Circle(10, 10);
// c.draw();

// 工厂模式
class ShapeFactory {
  getShape(type: string) {
    if (!type) {
      return null;
    }
    if (type === 'Circle') {
      return new Circle();
    } else if (type === 'Square') {
      return new Square();
    }
  }
}

const shapeFactory = new ShapeFactory();
const cf = shapeFactory.getShape('Circle')
cf.draw();
const sf = shapeFactory.getShape('Square');
sf.draw();

关于 ts 接口。 当我们声明 class Point 时, 除了会创建一个名为 Point 的类之外, 同时也创建了一个名为 Point 的类型(实例的类型)

class Point {
  x: number;
  y: number;
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }
}
// 当我们声明 class Point 时, 除了会创建一个名为 Point 的类之外, 同时也创建了一个名为 Point 的类型(实例的类型)
// 因此接口可继承类
interface Point3d extends Point {
  z: number;
}

let p: Point3d = { x: 1, y: 2, z: 3 };
let p2: Point = { x: 1, y: 2 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值