我正在学习状态管理flutter
,大部分时间我都会遇到单词business logic
ui logic
,有一段时间presentation logic
,我在互联网上搜索它,因为人们用不同的语言解释它,我无法更好地理解,有人可以展示这三种类型logic
以示例的形式并解释它非常干净和容易吗?
问问题
2153 次
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),
),
);
}
}
于 2020-05-21T05:48:14.710 回答