功能:定义一个操作数据库的库 支持mysql mssql MongoDb
要求:mysql mssql MoingoDb功能一样 都有add update delete get 方法
注意:约束统一规范 以及代码重用
1、首先用接口定义一个规范,规范里确定使用该接口的类要实现的方法
interface DBI<T>{
add(value:T):boolean
update(value:T,id:number):boolean
delete(id:number):boolean
get(id:number):any
}
2、实现泛型类 要实现泛型接口 这个类必须是泛型类!!!
class mysqlDb<T> implements DBI<T>{
add(value: T): boolean {
return true
}
update(value: T, id: number): boolean {
return true
}
delete(id: number): boolean {
return true
}
get(id: number): any[] {
var list=[
{
id:1,
name:'aaa'
},
{
id:2,
name:'bbb'
}
]
return list
}
}
//实现mongoDb类
class MongoDb<T> implements DBI<T>{
add(value: T): boolean {
return true
}
update(value: T, id: number): boolean {
return true
}/* */
delete(id: number): boolean {
return true
}
get(id: number): boolean {
return true
}
}
3、定义类 当做约束
class User{
username:string | undefined;
password:string | undefined;
}
class Artical{
title:string | undefined;
desc:string | undefined;
type:number | undefined;
}
4、实例化类
var u = new User()
var a = new Artical()
u.username='张三'
u.password='123456'
a.title='一本书'
a.desc='这是一本好书'
a.type=1
var mysql=new mysqlDb<User>()
var mongoDb=new MongoDb<Artical>()
mysql.add(u)
mongoDb.update(a,1)
泛型接口 -> 泛型类 -> 传入参数(user类 | Artical类 实例化的对象)
反过来看 user类 | Artical类实例化后传入泛型类 泛型类又遵从泛型接口 其实传入参数是受限制于最初始的泛型接口 从而实现限制传入该方法的数据