将绘画类和定义类的职责分开是否明智?

问题描述 投票:0回答:1

假设我有一个 PaintClass 类,其中包含 Paint 方法,它用于使用属性 shape 绘制 Container 小部件。这个PaintingClass应该显示带有文本和颜色的多边形,即它应该包含顶点数、绘制形状的名称、背景颜色等参数。而且我需要保留绘画形状然后恢复它们来显示。

PaintingClass
中声明所有必需的属性并直接使用它来绘制
Container
并在某些控制器中保存 JSON 是否明智:

class PaintingClass extends ShapeBorder {
  PaintingClass({
    this.name,
    this.color,
  });

  PaintingClass.fromJson(Map<String, dynamic> json);

  final String? name;
  final Color? color;
  ...

  @override
  void paint() {
     ...
  }

  Map<String, dynamic> toJson() {
    ...
  }
}

或创建一个类

PaintingClassInfo
,将由控制器和持久性使用

class PaintingClassInfo {
  PaintingClassInfo({
    this.name,
    this.color,
  });

  PaintingClassInfo.fromJson(Map<String, dynamic> json);

  final String name;
  final Color? color;
  ...

  Map<String, dynamic> toJson() {
    ...
  }
}

并且将被传递到绘画课

class PaintingClass extends ShapeBorder {
  PaintingClass(this.data);

  final PaintingClassInfo data;

  @override
  void paint() {
     ...
  }
}

哪个将在小部件树中使用?

flutter dart class solid-principles single-responsibility-principle
1个回答
0
投票

根据单一职责原则(SRP)。

如果将这些功能分开,会更好,这样会产生内聚的松散耦合模块。

许多术语与 SRP 具有相同的含义,例如:SOC内聚耦合

他们是相似的,至少在目标上

让我们描述一下凝聚力

这是SRP的灵感来源,它意味着模块元素之间的功能相关性。

这些元素的相关程度表明该模块的内聚程度。

现在你的问题来了,绘制方法与正在绘制的小部件有多少相关性,即使它是相关的。

如果该功能可以分离,那就去做吧。

希望对您有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.