功能:定义一个操作数据库的库,支持Mysql Mssql Mongodb
要求:Mysql Mssql Mongodb功能一样 都有add、update、delete、get方法
注意:约束统一的规范、以及代码重用
解决方案:需要约束规范要定义接口,需要代码重用所以要用到泛型
1、接口:在面向对象的编程中,接口是一种规范的定义,他定义了行为和动作的规范。
2、泛型:解决类、接口、方法的复用性。
interface DBI<T>{ add(info:T):boolean; update(info:T,id:number):boolean; delete(id:number):boolean; get(id:number):any[]; } // 定义一个操作mysql数据库类 注意:要实现泛型接口 这个类应该是一个泛型类。 class MysqlDbs<T> implements DBI<T>{ constructor(){ console.log('建立连接成功'); } add(info: T): boolean { console.log(info); return true; } update(info: T, id: number): boolean { throw new Error("Method not implemented."); } delete(id: number): boolean { throw new Error("Method not implemented."); } get(id: number): any[] { throw new Error("Method not implemented."); } } // 定义一个操作mssql数据库的类 class MssqlDBs<T> implements DBI<T>{ constructor(){ console.log('建立连接成功'); } add(info: T): boolean { throw new Error("Method not implemented."); } update(info: T, id: number): boolean { throw new Error("Method not implemented."); } delete(id: number): boolean { throw new Error("Method not implemented."); } get(id: number): any[] { var list = [ { title:'垃圾箱', desc:'华展智能垃圾箱' }, { title:'候车厅', desc:'华展智能候车厅' } ] return list; } } // 操作用户表 定义一个user类和数据表做映射 class User{ username:string | undefined; password:string | undefined; } var u = new User(); u.username = 'root'; u.password = '123456'; var oMysql = new MysqlDbs<User>();//类作为参数来约束数据传入的类型 oMysql.add(u); var oMssql = new MssqlDBs<User>(); var data = oMssql.get(4); console.log(data);