dart设计模式之工厂模式
工厂模式
模式分析
定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行
模式难点
模式解决问题
该模式主要解决接口选择的问题。我们明确地计划不同条件下创建不同实例时,让其子类实现工厂接口,返回的也是一个抽象的产品
优点
- 一个调用者想创建一个对象,只要知道其名称就可以了。
- 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。
- 屏蔽产品的具体实现,调用者只关心产品的接口。
缺点
每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。
模式应用场景
- 日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。
- 数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。
- 设计一个连接服务器的框架,需要三个协议,"POP3"、"IMAP"、"HTTP",可以把这三个作为产品类,共同实现一个接口。
模式代码
abstract class Pen {
draw();
}
class Pencil implements Pen {
draw() {
print("this is Pencil");
}
}
class ColorPen implements Pen {
draw() {
print("this is ColorPen");
}
}
class RunFactory implements Run {
@override
main() {
var pencil = getPen("Pencil");
var colorPen = getPen("ColorPen");
pencil.draw();
colorPen.draw();
}
Pen getPen(String penStr) {
if (penStr == "Pencil") {
return new Pencil();
} else if (penStr == "ColorPen") {
return new ColorPen();
} else {
return null;
}
}
}
最后
这里也为想要学习Flutter的朋友们准备了两份学习手册《Flutter Dart语言编程入门到精通》《Flutter实战》,从编程语言到项目实战,一条龙服务!!
详细 Vx关注公众号:Android老皮
《Flutter Dart 语言编程入门到精通》
-
第一章 Dart语言基础
-
第二章 Dart 异步编程
-
第三章 异步之 Stream 详解
-
第四章 Dart标准输入输出流
-
第五章 Dart 网络编程
-
第六章 Flutter 爬虫与服务端
-
第七章 Dart 的服务端开发
-
第八章 Dart 调用C语言混合编程
-
第九章 LuaDardo中Dart与Lua的相互调用
《Flutter实战:第二版》
- 第一章:起步
- 第二章:第一个Flutter应用
- 第三章:基础组件
- 第四章:布局类组件
- 第五章:容器类组件
-
第六章:可滚动组件
-
第七章:功能型组件
-
第八章:事件处理与通知
-
第九章:动画
-
第十章:自定义组件
-
第十一章:文件操作与网络请求
-
第十二章:Flutter扩展
-
第十三章:国际化
-
第十四章:Flutter核心原理
-
第十五章:一个完整的Flutter应用