Dart创建工厂模式

定义Shape形状类,并输出其面积

Dart 支持抽象类,可以在一个文本中定义多个类
dart.math 是一个 Dart 核心库,其余的还有诸如 dart:core,dart:async,dart:convert 和 dart:collection 这样的核心库

import 'dart:math';

abstract class Shape {
  num get area;
}

class Circle implements Shape {
  final num radius;
  Circle(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);
}

main() {
  final circle = Circle(2);
  final square = Square(2);
  print(circle.area);
  print(square.area);
}

创建一个顶层的方法

import 'dart:math';

abstract class Shape {
  num get area;
}

Shape shapeFactory(String type) {
  if (type == 'circle') return Circle(2);
  if (type == 'square') return Square(2);
  throw 'Can\'t create $type.';
}

class Circle implements Shape {
  final num radius;
  Circle(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);
}

main() {
  try {
    print(shapeFactory('circle').area);
    print(shapeFactory('square').area);
  } catch (err) {
    print(err);
  }
}

创建一个工厂模式的构造方法

使用 Dart 的 factory 关键字来创建一个工厂模式的构造方法

import 'dart:math';

abstract class Shape {
  factory Shape(String type) {
    if (type == 'circle') return Circle(2);
    if (type == 'square') return Square(2);
    throw 'Can\'t create $type.';
  }
  num get area;
}

class Circle implements Shape {
  final num radius;
  Circle(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);
}

main() {
  final circle = Shape('circle');
  final square = Shape('square');
  print(circle.area);
  print(square.area);
}
上一篇 Dart中的类与对象
下一篇 Dart接口的实现
目录
文章列表
1 Spring Boot通过Nacos动态获取yaml配置的List数组对象并映射
Spring Boot通过Nacos动态获取yaml配置的List数组对象并映射
2
MySQL之mysqld_safe启动详解
MySQL之mysqld_safe启动详解
3
TestNG异常测试
TestNG异常测试
4
Python Selenium窗口截图
Python Selenium窗口截图
5
Spring Cloud中Eureka Client启动后就关闭 Unregistering application xxx with eureka with status DOWN
Spring Cloud中Eureka Client启动后就关闭 Unregistering application xxx with eureka with status DOWN
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。