我正在flutter
学习状态管理,大部分时间我都遇到business logic
ui logic
字,有时甚至是presentation logic
,我在网上以人们的身份进行搜索用不同的语言来解释它,我无法更好地理解它,有人能以示例的形式展示这三种logic
并非常简洁地解释它吗?
答案 0 :(得分:5)
使用库时,将库与代码的关键部分(业务逻辑)分开是我们的责任和使命。
例如,在遵循这些原则的“干净架构”中,目标是将关注点和角色分离为以下类别:
1)UI(用户界面)
2)格式化程序(格式,法律部分,内容)
3)业务逻辑(业务规则)
4)数据(可以是内存中的网络,例如API或在线数据库或本地持久性存储/数据库)
在UI部件上使用跨平台/多平台的解决方案(如波动)可能比在Business部件上更具逻辑性。
业务逻辑不会经常更改,但是在开发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),
),
);
}
}