工厂模式相关
来源:互联网 发布:更改信息sql语句 编辑:程序博客网 时间:2024/05/25 01:36
场景:针对设置字体大小,字体颜色,背景,字体等属性。
简单工厂(静态方法):工厂提供setStyle()方法可以设置字体大小为20sp,字体颜色红色,背景为111.jpg。这种方式简单直接,只需要一个接口,3个产品类,一个简单工厂类即可实现。
现在有一个问题:此时如果需要设置字体为黑体,简单工厂的setStyle()方法是没有设置字体功能的。这时就需要修改简单工厂的类,没有可扩展性。
此时用工厂方法模式可实现可扩展性。
工厂方法类抽象出setStyle方法,由具体的工厂来实现。
此时需要一个接口,3个产品类,3个对应的工厂类,一个抽象工厂类实现。即增加1个对应的产品类和工厂类。
这种方式的好处是可以随时扩展出一个属性来而不需要修改其他类的代码,只需要增加一个产品类和一个对应的工厂类。可以为每种属性设置一个值。
现在问题又来了:如果需要为每种属性设置多个值,如冷色调和暖色调,以及其他值(UI界面换皮肤等),工厂方法就不够用了。此时需要使用抽象工厂方法,即在工厂方法的基础上实现多个接口。
实现m个属性,需要用到:
n个接口,n*m个产品方法,m个工厂类,一个抽象工厂类。
感觉工厂方法是抽象工厂方法只实现一个接口的情况,有木有?
各自的优点:
1.简单工厂,简单粗暴。
2.工厂方法,容易增加产品,即场景中容易增加属性,添加font属性只需要添加一个产品类实现接口,一个对应的工厂类即可。
3.抽象工厂方法,容易增加工厂,但是不容易增加接口,即场景中容易增加n个产品类和一个实现抽象工厂类的工厂类。
https://github.com/wang232024/designpattern.git
- 工厂相关模式
- 工厂模式相关
- 工厂相关模式
- 工厂模式相关
- 设计相关3-工厂相关模式
- 回顾工厂模式学习相关要点
- 浅说工厂相关的几个模式
- iOS设计模式:静态工厂相关
- iOS设计模式:静态工厂相关
- 设计模式的应用场景(2)--工厂相关模式
- 工厂模式 -- 工厂方法
- 工厂模式 -- 抽象工厂
- 工厂模式-简单工厂
- 工厂模式-工厂方法
- 工厂模式:静态工厂
- 工厂模式-简单工厂
- 工厂模式-抽象工厂
- 工厂模式-工厂方法
- KSQL介绍:面向Apache Kafka的开源Streaming SQL引擎
- tensorflow ‘/biases/Adam_1’not in ckpt file
- 二分查找有序序列
- 51Nod 1181: 质数中的质数(质数筛法)
- BZOJ 2288: 【POJ Challenge】生日礼物 链表+优先队列
- 工厂模式相关
- matlab到期
- 使用Swift,录制并保存音频文件
- JS 预分配数组长度,到底是变慢还是变快?
- V8 中的垃圾收集(GC),图文指南
- EF 相关问题:Linq的where条件如何在循环中写OR
- 两种幻灯片的写法
- 网络层-5、CIDR与路由聚合
- 如何从搭建有GIT服务的服务器上下载代码