原型模式(Prototype pattern)和前面的抽象工厂模式,构建器模式同属于生产型模式,
该模式主要是通过拷贝自身来获取新的对象。
它适用的场景不再是直接或间接的调用某个工厂方法/部件组合方法来创建对象;相反的,他则是使用产品对象 自克隆(clone) 的方法来完成对象的创建,简单来说就是一句话:我不知道要用什么方法来创建对象,但是我有我要创建的对象的实例/模版,复制一份就得了
模式结构
- 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,分别创建实例类Circle和Rectangle,定义初始化方法,并实现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对象。
本文最终的效果图如下图所示
代码我已上传至Gitlab,可以自行下载本文的示例代码 flutter_design_patterns
如果觉得有收获请按如下方式给个
爱心三连:👍:点个赞鼓励一下。🌟:收藏文章,方便回看哦!。💬:评论交流,互相进步!。