美文网首页
为什么 Flutter钟爱 装饰器模式和组合模式 ?

为什么 Flutter钟爱 装饰器模式和组合模式 ?

作者: Hamiltonian | 来源:发表于2022-02-21 16:20 被阅读0次
2401647917783_.pic.jpg

理由1:设计模式的基本原则

GOF(四人帮,全拼 Gang of Four), 于1994年四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 的书,提出了此概念。

  • 对接口编程而不是对实现编程。
  • 优先使用对象组合而不是继承。

理由2:UI布局可读性更高

例如:通过代码嵌套的方式,Stack 是被加到Container里面,Positioned 组件是加在Stack 组件里面。Text又是被加到Positioned里面。层级关系一清二楚,代码也可以展开折叠!

Container(
          child: Stack(
            children: [
              Positioned(
                child: Text("top"),
                left: 10,
                top: 10,
              ),
              Positioned(
                child: Text("bottom"),
                bottom: 10,
                right: 10,
              ),
            ],
          ),
        )

如果不用装饰器模式+组合模式,会怎么样【下面是iOS UI的代码】

[self.positionedView1 addSubview:bottomText];
[self.positionedView2 addSubview:topText];
[self.stackView addSubview:self.positionedView1];
[self.stackView addSubview:self.positionedView2];
[self.containerView addSubview:self.stackView];

addSubview代码满天飞,如果addSubview的次序搞错了,子View就会被父View遮挡。

上面还不包括UI控件创建的代码,再加上逻辑,耦合度太高了

理由3:语义化更明显:

案例:给ListView添加滚动指示器

//在ListView外层包裹一个Scrollbar,并且将自身作为参数传入Scrollbar
Scrollbar(
        child: ListView.builder(
          itemBuilder: (BuildContext context, int index) {
            return Text("index:$index");
          },
          itemCount: 200,
        ),
      )

Scrollbar+ListView = 带滚动指示器的列表

理由4:装饰器模式+组合模式践行着 面向对象的六大原则

  • 单一职责原则【Single Responsibility Principle】
  • 开闭原则 【Open Closed Principle】:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭
  • 里式替换原则【Liskov Substitution Principle】
  • 依赖倒置原则【Dependence Inversion Principle】
  • 接口隔离原则 【Interface Segregation Principle】
  • 迪米特原则 【Law of Demeter 低耦合,高内聚】

组合模式:通过树型结构的问题中,通过模拟树🌲的层级关系,从而使得客户程序与复杂元素的内部结构解耦。

装饰器模式:允许向一个现有的对象添加新的功能,同时又不改变其结构。实现低耦合,高内聚的代码(迪米特原则),同时满足【开闭原则】(一个软件实体如类、模块和函数应该对扩展开放,对修改关闭),同时Flutter众多的Widget也体现了单一职责原则和接口隔离原则。

相关文章

  • 为什么 Flutter钟爱 装饰器模式和组合模式 ?

    理由1:设计模式的基本原则 GOF(四人帮,全拼 Gang of Four), 于1994年四人合著出版了一本名为...

  • 设计模式の装饰器模式

    在前面相信大家对组合模式已经有了一定的了解,现在我们来继续讲一下装饰器模式。 什么是装饰器模式 装饰模式是通过组合...

  • 记-Python-利用修饰器将方法属性化

    修饰器 在面向对象(OOP)的设计模式中,decorator被称为装饰模式。OOP的装饰模式需要通过继承和组合来实...

  • 设计模式之 - 装饰器

    装饰器模式,利于后面新功能增加或者删除,支持各种组合操作,这就是装饰器模式的强大

  • Python装饰器模式

    标签: python|设计模式|装饰器模式 引子 对于装饰器模式我正在一点一点的理解........使用对象组合的...

  • 结构性模式(二):装饰器、外观模式

    1、装饰器模式(Decorator Pattern) 装饰器模式主要解决继承关系过于复杂的问题,通过组合来替代继承...

  • Java设计模式——装饰器模式

    Java设计模式之装饰器模式 回顾 上一次分享的组合模式相信大家已经理解其中的精髓,那么这次跟大家聊聊装饰器模式。...

  • 设计模式-结构型模式

    结构类模式包括适配器模式、桥接模式、组合模式、装饰模式、门面模式、享元模式和代理模式。 为什么叫结构类模式呢?因为...

  • 9、结构型模式-装饰器设计模式

    1、如虎添翼的设计模式-装饰器设计模式 简介:讲解-装饰器设计模式介绍和应用场景 装饰器设计模式(Decorato...

  • 设计模式分类

    创建型模式->5种: 常用的 结构性模式->7种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式...

网友评论

      本文标题:为什么 Flutter钟爱 装饰器模式和组合模式 ?

      本文链接:https://www.haomeiwen.com/subject/xxjilrtx.html