-
要求:MySQL MSSQL MongoDB 功能一样,都有add、update、delete、get方法。
-
注意:约束统一的规范、以及代码重用
-
解决方案:需要约束规范所以要定义接口,需要代码重用所以用到泛型
- 接口:在面向对象的编程中,接口是一种定义规范的定义,他定义了行为和动作的规范
- 泛型通俗的理解:泛型就是解决类、接口、方法的复用性
//定义接口 interface DBI<T>{ add(info:T):boolean; update(info:T,id:number):boolean; delete(id:number):boolean; get(id:number):any[]; } //定义一个操作mysql数据库的类 注意:要实现泛型接口,这个类应该也是泛型类 class MysqlDb<T> implements DBI<T>{ add(info:T):boolean{ console.log(info); return true; } update(info:T,id:number):boolean{ } delete(id:number):boolean{ } get(id:number):any[]{ var list =[{ title:"xx", desc:"xxxxx" },{ title:"xx", desc:"xxxxx" }] return list; } } //定义一个操作mssql数据库的类 class MssqlDb<T> implements DBI<T>{ constructor(){ console.log("数据库建立连接"); } add(info:T):boolean{ console.log(info); return true; } update(info:T,id:number):boolean{ } delete(id:number):boolean{ } get(id:number):any[]{ var list =[{ title:"xx", desc:"xxxxx" },{ title:"xx", desc:"xxxxx" }] return list; } } //操作用户表 定义一个user类和数据表做映射 class User{ username:string|undefined; password:string|undefined; } //实例化user var u = new User(); u,username="aaa"; u.pasword="123123"; var oMysql = new MysqlDb<User>(); oMysql.add(u);//{username:"aaa",pasword:"123123"} var oMssql = new MssqlDb<User>(); oMssql.add(u);//{username:"aaa",pasword:"123123"} //获取User表 id=4的数据 var data = oMssql.get(4); console.log(data);//
(简单的模拟数据库,可以自己扩展)