工厂模式: 在创建对象时不会对客户端暴露创建逻辑
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 }