Dart学习笔记(十六)

63 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

 

Dart 接口 文件分离

和Java一样,dart也有接口,但是和Java还是有区别的

 

首先,dart的接口没有interface关键字定义接口,而是普通类或抽象类都可以作为接口被实现

 

同样使用implements关键字进行实现

 

但是dart的接口有点奇怪,如果实现的类是普通类,会将普通类和抽象中的属性的方法全部需要覆写一遍

 

而因为抽象类可以定义抽象方法,普通类不可以,所以一般如果要实现像Java接口那样的方式,一般会使用抽象类

 

建议使用抽象类定义接口

 

定义一个DB库 支持 mysql  mssql  mongodb

 


// mysql  mssql  mongodb三个类里面都有同样的方法

 

abstract class Db {

 

  // 当做接口 接口: 就是约定、规范

 

  late String uri; // 数据库连接地址

 

  add(String data);

 

  save();

 

  delete();

 

}

 

class MySql implements Db {

 

  @override

 

  late String uri;

 

  MySql(this.uri); // 连接数据库

 

 

 

  @override

 

  add(data) {

 

    // TODO: implement add

 

    print('这是MySql的add方法' + data);

 

 }

 

 

 

  @override

 

  delete() {

 

    // TODO: implement delete

 

    throw UnimplementedError();

 

  }

 

 

 

  @override

 

  save() {

 

    // TODO: implement save

 

    throw UnimplementedError();

 

  }

 

}

 

 

 

class MsSql implements Db {

 

  @override

 

  late String uri;

 

 

 

  @override

 

  add(String data) {

 

    // TODO: implement add

 

    print('这是MsSql的add方法' + data);

 

  }

 

@override

 

  delete() {

 

    // TODO: implement delete

 

    throw UnimplementedError();

 

  }

 

 

 

  @override

 

  save() {

 

    // TODO: implement save

 

    throw UnimplementedError();

 

  }

 

}

 

 

 

void main() {

 

  MySql mySql = new MySql('xxxxxxx'); // 传入数据库地址

 

  mySql.add('1232243344');

 

}

 

文件分离

定义一个DB库 支持 mysql  mssql  mongodb

 

mysql  mssql  mongodb三个类里面都有同样的方法

 

当前目录新建lib文件夹 文件夹里新建 Db.dart文件 MySql.dart文件 MsSql.dart文件

 

Db.dart 内容如下:

 


abstract class Db {

 

  // 当做接口 接口: 就是约定、规范

 

  late String uri; // 数据库连接地址

 

  add(String data);

 

  save();

 

  delete();

 

}

MySql.dart 内容如下:

 


import 'Db.dart';

 

class MySql implements Db {

 

  @override

 

  late String uri;

 

  MySql(this.uri); // 连接数据库

 

  @override

 

  add(data) {

 

    // TODO: implement add

 

    print('这是MySql的add方法' + data);

 

  }

 

  @override

 

  delete() {

 

    // TODO: implement delete

 

    throw UnimplementedError();

 

  }

 

  @override

 

  save() {

 

    // TODO: implement save

 

    throw UnimplementedError();

 

  }

 

}

MsSql.dart 文件内容如下:

 


import 'Db.dart';

 

class MsSql implements Db {

 

  @override

 

  late String uri;

 

  @override

 

  add(String data) {

 

    // TODO: implement add

 

    print('这是MsSql的add方法' + data);

 

  }

 

  @override

 

  delete() {

 

    // TODO: implement delete

 

    throw UnimplementedError();

 

  }

 

  @override

 

  save() {

 

    // TODO: implement save

 

    throw UnimplementedError();

 

  }

 

}

主文件内容:

 


import 'lib/MySql.dart';

 

import 'lib/MsSql.dart';

 

void main() {

 

  MySql mySql = new MySql('xxxxxxx'); // 传入数据库地址

 

  mySql.add('1232243344'); // 这是MySql的add方法1232243344

 

  MsSql msSql = new MsSql();

 

  msSql.uri='127.0.0.1';

 

  msSql.add('1234321'); // 这是MsSql的add方法1234321

 

}