import 'dart:math';
/**
* 1、可以声明抽象类
* 2、可以在一个文件中定义多个类。
* 3、dart.math是Dart的核心库之一。其他核心库包括dart:core,dart:async,dart:convert和dart:collection。
* 4、在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);
}
/**
* 工厂方法
* 1、遇到异常时,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);
}