四、工厂方法

Dart抽象类与工厂方法
本文介绍Dart语言中抽象类的声明及使用,通过圆形和正方形类实例展示面积计算。同时,探讨了Dart核心库的演变,以及如何通过工厂方法创建不同类型的形状对象。
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);
}

 

转载于:https://my.oschina.net/u/782865/blog/2396074

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值