06、TypeScript 类型、接口、类、泛型 综合使用,封装一个操作数据库的库

1.封装一个操作数据库的库

/*
  功能:定义一个操作数据库的库 支持 Mysql、Mssql、MongoDb
  要求:Mysql、MsSql、MongoDb 功能一样 ,都有 add、update、get 方法
  注意:约束统一的规范、以及代码重用
  解决方案:需要约束规范所以要定义接口,需要代码重用所以用到泛型
    1.接口:在面向对象编程中,接口是一种规范的定义,它定义了行为和动作的规范
    2.泛型:就是解决 类、接口、方法 的复用性
*/
interface DBI<T> {
  add(info: T): boolean;

  delete(id: number): boolean;

  get(id: number): any[];

  update(info: T, id: number): boolean;
}

// 定义一个操作 mysql 数据库的类
// 注意:要实现泛型接口 这个类也应该是一个泛型类
class MySqlDb<T> implements DBI<T> {
  constructor() {
    console.log('数据库建立连接');
  }

  add(info: T): boolean {
    console.log(info);// 这里可以获取添加的数据
    return true;
  }

  delete(id: number): boolean {
    return true;
  }

  get(id: number): any[] {
    return [];
  }

  update(info: T, id: number): boolean {
    return true;
  }
}

// 定义一个操作 mssql 数据库的类
class MsSqlDb<T> implements DBI<T> {
  add(info: T): boolean {
    return true;
  }

  delete(id: number): boolean {
    return true;
  }

  get(id: number): any[] {
    return [];
  }

  update(info: T, id: number): boolean {
    return true;
  }
}

// 操作用户表  定义一个 User 类和数据表做映射
class User {
  username: string | undefined;
  password: string | undefined;
}

var u = new User();
u.username = 'zhangning';
u.password = '123456';

// 给 mysql 数据库增加数据
var omysql = new MySqlDb<User>();// 类作为参数来约束数据传入的类型
omysql.add(u);

// 给 mssql 数据库增加数据,想操作哪个库,换哪个类就可以了
var omssql = new MsSqlDb<User>();// 类作为参数来约束数据传入的类型
omssql.add(u);

 

posted @ 2021-04-12 17:41  张_Ning  阅读(121)  评论(0编辑  收藏  举报