1.封装一个操作数据库的库
/* 功能:定义一个操作数据库的库 支持 Mysql、Mssql、MongoDb 要求:Mysql、MsSql、MongoDb 功能一样 ,都有 add、update、get 方法 注意:约束统一的规范、以及代码重用 解决方案:需要约束规范所以要定义接口,需要代码重用所以用到泛型 1.接口:在面向对象编程中,接口是一种规范的定义,它定义了行为和动作的规范 2.泛型:就是解决 类、接口、方法 的复用性 */ interface DBI<T> { add(info: T): boolean; delete(id: number): boolean; get(id: number): any[]; update(info: T, id: number): boolean; } // 定义一个操作 mysql 数据库的类 // 注意:要实现泛型接口 这个类也应该是一个泛型类 class MySqlDb<T> implements DBI<T> { constructor() { console.log('数据库建立连接'); } add(info: T): boolean { console.log(info);// 这里可以获取添加的数据 return true; } delete(id: number): boolean { return true; } get(id: number): any[] { return []; } update(info: T, id: number): boolean { return true; } } // 定义一个操作 mssql 数据库的类 class MsSqlDb<T> implements DBI<T> { add(info: T): boolean { return true; } delete(id: number): boolean { return true; } get(id: number): any[] { return []; } update(info: T, id: number): boolean { return true; } } // 操作用户表 定义一个 User 类和数据表做映射 class User { username: string | undefined; password: string | undefined; } var u = new User(); u.username = 'zhangning'; u.password = '123456'; // 给 mysql 数据库增加数据 var omysql = new MySqlDb<User>();// 类作为参数来约束数据传入的类型 omysql.add(u); // 给 mssql 数据库增加数据,想操作哪个库,换哪个类就可以了 var omssql = new MsSqlDb<User>();// 类作为参数来约束数据传入的类型 omssql.add(u);