/** * TypeScript 实体类 Model * Builder Pattern * 生成器是一种创建型设计模式, 使你能够分步骤创建复杂对象。 * 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; }*/ /** * 序号 * @returns 返回序号 */ public getId(): number { //get return this.id; } /** * 座位数 * @returns 返回座位数 */ public getSeats(): number { //get return this.seats; } /** * 发动机 * @returns 返回发动机型号名称 */ public getEngine(): string { //get return this.engine; } /** * 设置座位数 * @param seats 输入数字座位数 */ public setSeats(seats: number) //set { this.seats=seats; } /** * 设置发动机型号 * @param engine 输入型号名称 */ public setEngine(engine: string) //set { this.engine=engine; } /** * * @param id */ public setId(id:number) { this.id=id; } } /** * 继承 */ 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(); */ /** * 接口extends Car */ interface CBuilder { /** * * @param seats */ setSeats(seats: number): this; /** * * @param engine */ setEngine(engine: string): this; /** * * @param id */ setId(id:number):this; } /** * 继承 Builder */ class CarBuilder implements CBuilder { /** * 车信息类 */ private car: Car; /** * 实例化 */ constructor() { this.car = new Car(); } /** * 设置座位数 * @param seats 座位号 * @returns 返回座位号 */ public setSeats(seats: number): this { //this.car.setSeats(seats); this.car.setSeats(seats); return this; } /** * 设置发动机型号 * @param engine 发动机型号名称 * @returns */ public setEngine(engine: string): this { this.car.setEngine(engine); return this; } /** * id 序号 * @param id * @returns */ public setId(id:number):this{ this.car.setId(id); return this; } /** * 得到实体 * @returns 返回车信息类 */ public getResult(): Car { return this.car; } } /** * * */ class MotorcycleBuilder implements CBuilder { /** * */ private motorcycle: Motorcycle; /** * */ constructor() { this.motorcycle = new Motorcycle(); } /** * * @param seats * @returns */ public setSeats(seats: number): this { this.motorcycle.setSeats(seats); return this; } /** * * @param engine * @returns */ public setEngine(engine: string): this { this.motorcycle.setEngine(engine); return this; } /** * * @param id * @returns */ public setId(id: number): this { this.motorcycle.setId(id); return this; } /** * * @returns */ public getResult(): Motorcycle { return this.motorcycle; } } /** * */ class DuDirector { /** * * @returns */ public buildFerrari(): Car { return new CarBuilder().setId(1).setSeats(2).setEngine("V-12").getResult(); } /** * * @returns */ public buildToyota(): Car { return new CarBuilder().setId(2).setSeats(7).setEngine("V-6").getResult(); } /** * * @returns */ public buildHonda(): Motorcycle { return new MotorcycleBuilder().setId(3).setSeats(2).setEngine("V-4").getResult(); } /** * * @returns */ public buildYamaha(): Motorcycle { return new MotorcycleBuilder().setId(4).setSeats(1).setEngine("V-2").getResult(); } } /** * */ 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() .setId(100) .setSeats(2) .setEngine("V-4") .getResult(); let pucarid=""+motorcycle.getId(); let pucar1=""+motorcycle.getSeats(); let pucar2=""+motorcycle.getEngine(); let messageCar: string = 'Hello World,This is a typescript!,涂聚文 Geovin Du Web'; document.body.innerHTML = messageCar+"<br/>,id:"+pucarid+",座位数:"+pucar1+",发动机型号:"+pucar2+","+car.getSeats()+","+car.getEngine()+","+directorBu.buildFerrari().getEngine()+",TypeScript 生成器方法模式"; console.log(motorcycle.getId()); console.log(motorcycle.getSeats()); console.log(motorcycle.getEngine());
调用:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <head><title>TypeScript:生成器模式</title> <meta name="Description" content="geovindu,涂聚文,Geovin Du"/> <meta name="Keywords" content="geovindu,涂聚文,Geovin Du"/> <meta name="author" content="geovindu,涂聚文,Geovin Du"/> </head> <body> <script src="dist/CarBuilderts.js"></script> </body> </html>
输出:
标签:engine,typescript,return,Pattern,Builder,number,public,seats,id From: https://www.cnblogs.com/geovindu/p/17743864.html