分析问题
今天在我的flutter工程中遇到一个问题,有A,B两个页面,在某种情况下B页面需要跳转到一个新的页面进行一些业务操做,而新的页面和A页面构成情况是相似的,但是业务逻辑细节上不一样。
旧的解决方案:不创建新页面,让a替代这个新页面,实现a时在细节不一样的地方进行判断,是进行原来的业务逻辑还是进行“新页面”的业务逻辑。
之前只是少数情况不一样,所以可以用这种判断的形式来实现。但是由于业务需求的变动,“新页面”的逻辑已经很多跟A页面不一样了,所以再照旧得解决方案来的话,需要判断的地方就太多了。这也暴露了旧的解决方案实在是比较敷衍,程序可拓展性非常弱。新的解决方案应运而生。
新的解决方案:在设计模式中,针对类的创造型设计模式总共有四种:单例工厂模式,单例,建造者,模板模式。由于两个界面的页面构成相似,但是实现细节不同,选择了构造者模式。
解决问题
1.目标类
A界面和新界面的界面构成都是由头部,左中右部,这四部分构成的。
class Editor {
Widget barWidget;
Widget leftWidget;
Widget centerWidget;
Widget rightWidget;
}
2.抽象builder
抽象builder给出分别实现这四部分细节的抽象方法,以及一个获取目标类实例的一个方法。
abstract class EditorBuilder {
void setBar();
void setLeftWidget();
void setCenterWidget();
void setRightWidget()