3

我正在学习状态管理flutter,大部分时间我都会遇到单词business logic ui logic,有一段时间presentation logic,我在互联网上搜索它,因为人们用不同的语言解释它,我无法更好地理解,有人可以展示这三种类型logic以示例的形式并解释它非常干净和容易吗?

4

1 回答 1

5

当我们使用库时,将其与代码的关键部分(即业务逻辑)分开是我们的责任和使命。
例如,在尊重这些原则的清洁架构中,目标是将关注点和角色分开,可分为:
1)UI(用户界面)
2)格式化程序(格式、法律部分、内容)
3)业务逻辑(业务规则)
4)数据(可以是内存中的、API 或在线数据库等网络或本地持久存储/数据库)

在 UI 部分使用像 Flutter 这样的跨平台/多平台解决方案可能比在业务部分更符合逻辑。
业务逻辑不会经常更改,但在开发 UI 时可能会经常更改。
例如,对于网络调用,我们可以自己实现这一层,也可以依赖一个知名的库。如果明天出现一个新的更好的,我们只需要替换我们层的实现而不影响整个模块或项目。
有时,当客户说应用程序需要具有相同功能的新 UI 时,可能是按照这样的方式构建的,主要是 UI 的变化,而不影响背后的功能逻辑。
在颤振的上下文中,考虑一个增加按下计数的基本应用程序的例子,逻辑应该分开(可能在其他类/文件中)所以如果我们需要将按下 1,2,3 次按下更改为 a,b ,c...时代新闻,唯一的业务逻辑应该改变。
按照下面的例子:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 65;
  String hello = "a";

  // the only business logic change will be here...No UI change require
  void _incrementCounter() {
    setState(() {
      hello = String.fromCharCode(_counter);
      if(_counter!=90)
        _counter++;
      else
        _counter = 65;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$hello',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

仍然不明白,请参阅以下内容:
(1)(2)(3)

于 2020-05-21T05:48:14.710 回答