4、工廠方法

import 'dart:math';
/**
 * 一、能夠聲明抽象類
 * 二、能夠在一個文件中定義多個類。
 * 三、dart.math是Dart的核心庫之一。其餘核心庫包括dart:core,dart:async,dart:convert和dart:collection。
 * 四、在Dart 1.x中,核心庫常量是大寫(PI); 在Dart 2中,它們是小寫的(pi)。
 */
abstract class Shape {
  num get area;
}

class Cicle implements Shape {
  final num radius;
  Cicle(this.radius);
  num get area => pi * pow(radius, 2);
}

class Square implements Shape {
  final num side;
  Square(this.side);
  num get area => pow(side, 2);
}
/**
 * 工廠方法
 * 一、遇到異常時,DartPad會報告Uncaught。要查看更有用的信息,請將代碼包裝在try-catch語句中,而後打印異常
 */
Shape shapeFactory(String type) {
  if (type == 'cicle') return Cicle(2);
  if (type == 'square') return Square(2);
  throw 'Can\'t create $type';
}

main() {
  final cicle = shapeFactory('cicle');
  final square = shapeFactory('square');
  print(cicle.area);
  print(square.area);
}
相關文章
相關標籤/搜索