功能:定義一個操作數(shù)據(jù)庫的庫 支持mysql mssql MongoDb
要求:mysql mssql MoingoDb功能一樣 都有add update delete get 方法
注意:約束統(tǒng)一規(guī)范 以及代碼重用
1、首先用接口定義一個規(guī)范,規(guī)范里確定使用該接口的類要實現(xiàn)的方法
interface DBI<T>{
add(value:T):boolean
update(value:T,id:number):boolean
delete(id:number):boolean
get(id:number):any
}
2、實現(xiàn)泛型類 要實現(xiàn)泛型接口 這個類必須是泛型類!!!
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
}
}
//實現(xiàn)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)
泛型接口 -> 泛型類 -> 傳入?yún)?shù)(user類 | Artical類 實例化的對象)
反過來看 user類 | Artical類實例化后傳入泛型類 泛型類又遵從泛型接口 其實傳入?yún)?shù)是受限制于最初始的泛型接口 從而實現(xiàn)限制傳入該方法的數(shù)據(jù)