要求:MySql、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的类
//注意:要实现泛型接口,这个类也要是泛型,MySqlDb后面也要跟上泛型,否则报错
class MySqlDb<T> implements DBI<T>{
constructor(){
console.log('连接mySql数据库')
}
add(info:T):boolean{
console.log(info);
return true;
}
update(info:T,id:number):boolean{
return true;
}
delete(id:number):boolean{
return true
}
get(id:number):any[]{
let list:any[] = []; //数据库得到的数据
return list
}
}
//操作MongoDb的类
//注意:要实现泛型接口,这个类也要是泛型,MongoDb后面也要跟上泛型,否则报错
class MongoDb<T> implements DBI<T>{
constructor(){
console.log('连接MongoDb数据库')
}
add(info:T):boolean{
console.log(info);
return true;
}
update(info:T,id:number):boolean{
return true;
}
delete(id:number):boolean{
return true
}
get(id:number):any[]{
let list:any[] = []; //数据库得到的数据
return list
}
}
//定义用户表做映射
class User{
username:string | undefined;
password:string | undefined;
}
//操作
let u = new User();
u.username = '111';
u.password = '222';
let sql = new MySqlDb<User>(); //用User类来约束传入的合法性
sql.add(u);
