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);
}
相关文章
相关标签/搜索