Dart基础第十一篇:面向对象之接口

/**
 * Dart之接口
 * Dart中的接口没有interface关键字来修饰,而是普通的类或抽象类都可以作为接口被实现
 * 同样使用implements来实现
 *
 * 但是Dart的接口有点奇怪,如果实现的内容是普通类,会将普通类和抽象类中的属性方法全部都要重写一遍。
 * 而因为抽象类可以定义为抽象方法,普通类不可以,所以一般如果要实现像Java接口那样的方法,一般会使用抽象类。和Java一样 Dart只支持单继承 支持多接口的实现;但是Dart有个功能叫mixins 可以实现类似于多继承的功能。
 *
 * 建议使用抽象类定义接口。
 */

import 'dart:math';

/**
 * 案例:
 * 这里定义一个Db的抽象类
 * 定义两个实现类来实现DB的接口
 */

class Person{
  String id;
  String _name;
  String _sex;
  int _age;

  Person();

  int get age => _age;

  set age(int value) {
    _age = value;
  }

  String get sex => _sex;

  set sex(String value) {
    _sex = value;
  }

  String get name => _name;

  set name(String value) {
    _name = value;
  }

  @override
  String toString() {
    return 'Person{id: $id, _name: $_name, _sex: $_sex, _age: $_age}';
  }


}
abstract class Db{

  /**
   * 连接数据库
   */
  bool connect(String url,String userName,String password);

  /**
   * 保存
   */
  Person save(Person person);

  /**
   * 删除
   */
  int delete(int id);
}

class MySql implements Db{
  @override
  bool connect(String url, String userName, String password) {
    if(url=='www.baidu.com'&&userName=='mysql'&&password=='db'){
      return true;
    }
    return false;
  }

  @override
  Person save(Person person) {
    return person;
  }

  @override
  int delete(int id) {
    return 1;
  }
}

class MongoDb implements Db{
  @override
  bool connect(String url, String userName, String password) {
    if(url=='www.baidu.com'&&userName=='mongodb'&&password=='db2'){
      return true;
    }
    return false;
  }

  @override
  int delete(int id) {
    return 2;
  }

  @override
  Person save(Person person) {
    return person;
  }
}

void main(){
  MySql mySql = new MySql();
  print('mysql->connect....'+mySql.connect('www.baidu.com', 'mysql', 'db').toString());
  Person person = new Person();
  person..age=1
        ..name='sql'
        ..sex='男'
        ..id=Random().nextInt(12).toString();
  print('mysql->save....'+mySql.save(person).toString());
  print('mysql->delete....'+mySql.delete(1).toString());

  MongoDb mongoDb = new MongoDb();
  print('mongoDb->connect....'+mongoDb.connect('www.baidu.com', 'mongodb', 'db2').toString());
  Person person2 = new Person();
  person2..age=2
        ..name='mongoDb'
        ..sex='未知'
        ..id=Random().nextInt(20).toString();
  print('mongoDb->save....'+mongoDb.save(person2).toString());
  print('mongoDb->delete....'+mongoDb.delete(1).toString());
}
发布了66 篇原创文章 · 获赞 36 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/u013600907/article/details/99843199