Flutter设计模式(三)- 原型模式

206 阅读1分钟

原型模式(Prototype pattern)和前面的抽象工厂模式,构建器模式同属于生产型模式, 该模式主要是通过拷贝自身来获取新的对象。

它适用的场景不再是直接或间接的调用某个工厂方法/部件组合方法来创建对象;相反的,他则是使用产品对象 自克隆(clone)  的方法来完成对象的创建,简单来说就是一句话:我不知道要用什么方法来创建对象,但是我有我要创建的对象的实例/模版,复制一份就得了

模式结构

截屏2022-04-05 下午4.10.31.png

  • 1,定义一个原型类,并定义clone()方法,并返回其自身新对象。

模式实现

1,创建 Shape原型类,并定义默认属性,方法和clone()方法。

abstract class Shape {
  late Color color;
  Shape(this.color);

  Shape.clone(Shape source) {
    color = source.color;
  }

  Shape clone();
  void randomiseProperties();
  Widget render();
}

2,分别创建实例类CircleRectangle,定义初始化方法,并实现clone方法。

class Circle extends Shape {
  late double radius;
  Circle(Color color, this.radius) : super(color);

  Circle.initial() : super(Colors.black) {
    radius = 50.0;
  }
  Circle.clone(Circle source) : super.clone(source) {
    radius = source.radius;
  }

  @override
  Shape clone() {
    return Circle.clone(this);
  }

  @override
  void randomiseProperties() {
    ......
  }

  @override
  Widget render() {
    // TODO: implement render
    return SizedBox(
      ......
    );
  }
}

通过 clone方法可以获得一个新的Circle对象。

本文最终的效果图如下图所示

1649149678419366.gif

代码我已上传至Gitlab,可以自行下载本文的示例代码 flutter_design_patterns

如果觉得有收获请按如下方式给个 爱心三连:👍:点个赞鼓励一下。🌟:收藏文章,方便回看哦!。💬:评论交流,互相进步!