• 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);
  • 相关阅读:
    构建自己的外汇智能交易系统
    EA范例
    读书札记:加拿大元因素
    预计欧元近期将“绝境大反攻”
    读书札记:新西兰元因素
    在新的一年里开启新的人生
    旧文重发:行在道上,从局部到全局——与师者高焕堂、赵善中先生谈《大道至简》
    与邹欣先生就《大道至简》一书中的两个主要问题的讨论
    《大道至简》一书第三版,与编辑就本书写作风格的讨论
    与读者们谈谈《大道至简》这五年
  • 原文地址:https://www.cnblogs.com/zhangning187/p/zhyyfzzn210412187.html
Copyright © 2020-2023  润新知