首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

逻辑】什么是前端开发业务逻辑

业务逻辑?呵呵,许多前端新人很困惑这个话题。当他们在面试当中被问到“这个业务逻辑你是如何处理时候,他们经常会不知如何回答。 什么是业务逻辑?...其实一句话就能说清,“客户想干什么”,这就是业务逻辑。许多同学搞不清业务逻辑,其实就是没搞清你客户想要做什么。 所以有那么句话说,业务逻辑是由客户脑洞来决定。哈哈哈。 <!...这叫正常很有逻辑。 那,为什么业务逻辑需要分析呢? 刚才我们说了,业务逻辑是由客户需求决定。那么客户需求通常是不连贯,是跳跃性,也就是很可能是非逻辑,并且是经常会变化。...例如,刚才那个,也许客户想法是,我要先看到热菜是什么样?再来决定我要不要买这个菜!觉得很不可理喻吧?这个需求是倒着!!其实在日常开发很多这种情况。...所以我们就要分析、理清,让这个不可能理喻需求,变成可理喻、可实现需求。 这就是开发当中业务逻辑。 所以说,需要理解客户。不管你用什么语言写代码。

2.9K30

Android 架构」—— MVVM 详解

前言 只要你掌握了基础知识,要想构建一个完整 Android App 并不难,但是想要写出一个可维护 App 就是另一回事了,这时候就必须让你自己代码足够健壮,就需要避免把所有业务逻辑代码都放在...这里有一个重要概念:View 仅仅处理用户即时交互。什么意思呢?不要把业务逻辑比如数据库操作相关业务放在 Activities 或 Fragments 。...ViewModel ViewModel 就像 View 和业务逻辑之间粘合剂,它负责从 Repository 获取数据并提供给 View。...Model Model 就是你放置所有特定业务代码地方,虽然从技术上讲,ViewModel 和 Model 之间存在一个以 Repository 形式存在中间步骤,你可以将 Repository 所有内容视为远离用户界面的一组类...,它并不关心这些 —— 这是 Repository 应该处理业务逻辑

1.8K40
您找到你想要的搜索结果了吗?
是的
没有找到

Android Jetpack - Room

Repository 简介 什么是 RepositoryRepository 类抽象出对多个数据源访问。存储库不是体系结构组件库一部分,但是建议代码分离和体系结构最佳实践。...在最常见示例Repository 实现了用于决定是从网络获取数据还是使用在本地数据库缓存结果逻辑,既避免了 ViewModel 和数据直接交互又统一了单一真实数据源逻辑 Repository...追加如下内容,转换为 AndroidX 项目 android.enableJetifier=true android.useAndroidX=true 3、创建 Entity、DAO、Database...// wordDao.insert(word) } } } 4、创建 Repository Repository 作为 ViewModel 与数据操作中间层,避免了 ViewModel...与数据直接交互,即方便了 ViewModel 测试,又能在 Repository 实现单一真实数据源策略,从而使 ViewModel 更加关注于业务逻辑 class WordRepository

1.8K70

MVVM 成为历史,Google 全面倒向 MVI

总得来说,Activity或Fragment代码应该尽量精简,尽量将业务逻辑迁移到其它层 通过数据驱动界面 另一个重要原则是您应该通过数据驱动界面(最好是持久性模型)。...UI State是经过ViewModel转换应用数据。 UI层会向ViewModel发送用户事件通知。 ViewModel会处理用户操作并更新UI State。...[600] 网域层负责封装复杂业务逻辑,或者由多个ViewModel重复使用简单业务逻辑。此层是可选,因为并非所有应用都有这类需求。因此,您应仅在需要时使用该层。...://developer.android.com/jetpack/guide/domain-layer 数据层 数据层主要负责获取与处理数据逻辑,数据层由多个Repository组成,其中每个Repository...便可获取页面的所有状态,相对 MVVM 减少了不少模板代码 添加状态只需要添加一个属性,降低了ViewModel与View层通信成本,将业务逻辑集中在ViewModel,View层只需要订阅状态然后刷新即可

1.7K10

“终于懂了“系列:Jetpack AAC完整解析(四)MVVM - Android架构探索!

二、Android开发架构 具体到Android开发,开发架构就是描述 视图层、逻辑层、数据层 三者之间关系和实施: 视图层:用户界面,即界面的展示、以及交互事件响应。...View,视图层,即xml布局 Controller,控制层,负责业务逻辑。...但在Android,因为xml布局能力很弱,View很多操作是在Activity/Fragment,而业务逻辑同样也是写在Activity/Fragment。 ?...业务逻辑抽象成IPresenter接口,由具体Presenter实现类来完成。逻辑操作完成后调用IView接口方法刷新UI。 MVP 本质是面向接口编程,实现了依赖倒置原则。...View,视图,即Activity/Fragment ViewModel,视图模型,负责业务逻辑。 注意,MVVM这里ViewModel就是一个名称,可以理解为MVPPresenter。

1.9K10

关于Android架构,你是否还在生搬硬套?

为了方便大家理解下文我将数据逻辑统称为业务逻辑。 前面我们说到,Android开发应该具备数据层跟视图层,那业务逻辑放在哪一层比较合适呢?...比如MVVM模式下大家都说将业务逻辑放到ViewModel处理,这么说也没有太大问题,但如果一个界面足够复杂那对应ViewModel代码可能会有成百上千行,看起来会很臃肿可读性也非常差。...use case通常放在ViewModel/Presenter与数据层之间,业务逻辑以及Data Mapper都应该放在use case,每一个行为对应一个use case。...在当前Android可以使用DataBinding实现同样效果,以Jetpack MVVM为例:ViewModelRepository拿到数据暂存到ViewModel对应ObservableFiled...,将请求作为入口,渲染做为出口,在这个流程尽量不做与当前行为无关事(这也要求ViewModel,Repository函数要符合单一原则)。

82710

引入Jetpack架构后,你App会发生哪些变化?

经常听一些小伙伴提DataBinding不好用,原因是要在xml业务逻辑不好调试,对于这个观点我是持否定态度。...并不是我同意xml业务逻辑这一观点,我觉得碰到问题就得去解决问题,如果解决问题路上有障碍就尽量扫清障碍,而不是一味逃避。 如{vm.isShow ?...关于这个问题我在上篇文章Data Mapper章节描述很清楚,拿到后端数据转换成本地模型(此过程会编写所有数据相关逻辑),本地模型与设计图一一对应,不但可以将视图与后段隔离,而且可以解决xml编写业务逻辑问题...UI逻辑处理 Repository(远程): 代表远程仓库,从Repository取需要数据 ViewModel: Repository取出数据需暂存到ViewModel,同时将数据映射到视图层...如果你们后端比较善变我建议引入Data Mapper概念~如果你经常和同事开发同一个界面,可以试图将每一条业务逻辑封装到use case,这样大概率可以解决Git冲突问题..等等等等,总之只要能实实在在

99631

引入Jetpack架构后,你App会发生哪些变化?

经常听一些小伙伴提DataBinding不好用,原因是要在xml业务逻辑不好调试,对于这个观点我是持否定态度。...并不是我同意xml业务逻辑这一观点,我觉得碰到问题就得去解决问题,如果解决问题路上有障碍就尽量扫清障碍,而不是一味逃避。 如{vm.isShow ?...关于这个问题我在上篇文章Data Mapper章节描述很清楚,拿到后端数据转换成本地模型(此过程会编写所有数据相关逻辑),本地模型与设计图一一对应,不但可以将视图与后段隔离,而且可以解决xml编写业务逻辑问题...UI逻辑处理 Repository(远程): 代表远程仓库,从Repository取需要数据 ViewModel: Repository取出数据需暂存到ViewModel,同时将数据映射到视图层...如果你们后端比较善变我建议引入Data Mapper概念~如果你经常和同事开发同一个界面,可以试图将每一条业务逻辑封装到use case,这样大概率可以解决Git冲突问题..等等等等,总之只要能实实在在

1.9K80

正确认识 MVCMVPMVVM

前面我们说过,Model 层主要管理业务模型数据和行为,它既保存程序数据,也定义了处理该数据逻辑,所以 Model = 数据 + 业务逻辑。...因此,处理业务逻辑属于 Model 职责,而非 Controller。从数据维度来说,可以细分为数据定义、数据存储、数据获取。...ViewModel Model 封装了业务逻辑和数据,管理业务模型。...,肯定还需要做一些数据转换,比如,需要将时间戳转换为「yyyy-MM-dd HH:mm:ss」格式时间,paid 转换为「已付款」,金额前面再加个¥符号,数量前面加多个乘号。...getUserNameFromCache() 方法逻辑更简单,就直接从缓存读取并返回。 LoginViewModel 接着,再来聊聊 ViewModel,这个就很关键了。

2.5K32

引入Jetpack架构后,你App会发生哪些变化?

经常听一些小伙伴提DataBinding不好用,原因是要在xml业务逻辑不好调试,对于这个观点我是持否定态度。...并不是我同意xml业务逻辑这一观点,我觉得碰到问题就得去解决问题,如果解决问题路上有障碍就尽量扫清障碍,而不是一味逃避。 如{vm.isShow ?...关于这个问题我在上篇文章Data Mapper章节描述很清楚,拿到后端数据转换成本地模型(此过程会编写所有数据相关逻辑),本地模型与设计图一一对应,不但可以将视图与后段隔离,而且可以解决xml编写业务逻辑问题...UI逻辑处理 Repository(远程): 代表远程仓库,从Repository取需要数据 ViewModel: Repository取出数据需暂存到ViewModel,同时将数据映射到视图层...如果你们后端比较善变我建议引入Data Mapper概念~如果你经常和同事开发同一个界面,可以试图将每一条业务逻辑封装到use case,这样大概率可以解决Git冲突问题..等等等等,总之只要能实实在在

81500

无处安放业务逻辑使你在Android架构上吃了多少生硬亏,是否还在生搬硬套?

对于前端我觉得可以适当引入Data Mapper,将后端数据转换成本地模型,本地模型只与设计图对应,将后端业务与视图完全隔离。...为了方便大家理解下文我将数据逻辑统称为业务逻辑。 前面我们说到,Android开发应该具备数据层跟视图层,那业务逻辑放在哪一层比较合适呢?...比如MVVM模式下大家都说将业务逻辑放到ViewModel处理,这么说也没有太大问题,但如果一个界面足够复杂那对应ViewModel代码可能会有成百上千行,看起来会很臃肿可读性也非常差。...在当前Android可以使用DataBinding实现同样效果,以Jetpack MVVM为例:ViewModelRepository拿到数据暂存到ViewModel对应ObservableFiled...(这也要求ViewModel,Repository函数要符合单一原则)。

1.6K00

你真的了解ViewModel设计思想吗?

引言 在Android开发,数据管理是一个至关重要问题。随着应用复杂度增加,我们需要一种能够有效管理数据和处理UI相关逻辑机制。Android架构组件ViewModel应运而生。...在AndroidViewModel通常用于存储和管理与UI相关数据,以确保这些数据在屏幕旋转或配置更改等情况下不会丢失。 原理解析 ViewModel原理是基于ViewModelStore类。...它存在是为了解决以下问题: 生命周期一致性:在Android开发,我们经常遇到配置更改(如屏幕旋转)导致Activity或Fragment被销毁并重新创建情况。...将ViewModel职责限制在处理UI相关逻辑,不要包含过多业务逻辑。 谨慎使用SavedStateHandle,避免将大量数据存储在其中导致性能问题。...结语 通过深入理解ViewModel原理和高级运用,我们可以更好地利用这一强大架构组件。ViewModel设计模式和生命周期感知使其成为Android开发不可或缺一部分。

16310

关于领域对象业务逻辑条件判断最佳实践

这篇文章其实是大健康行业直销系统番外篇,主要给大家讲讲如何在领域逻辑,有效处理业务逻辑条件判断最佳实践问题。 大家都知道,聚合根、实体和值对象这些领域对象都自身处理自己业务逻辑。...在业务处理过程,通常会有一些条件判断,当满足这些条件时,会进行不同后续处理。...在传统实现,可以通过If Else条件语句进行判断,但If Else语句在复杂领域中来检查是否满足一些业务条件存在以下问题: 1.      无法很好显示表达业务条件本身。 2.     ...无法对多个条件在不同需要地方进行灵活组合。 为了更好组织业务逻辑关于业务条件判断,最佳实践方式是将业务条件拆分得足够细,并用语义化方式表示。...举个例子:酒店业务,房间领域对象会处理预定房间领域逻辑和退房领域逻辑,在预定房间时,我们需要保证房间没有被其他人预定并且房间没有正在维护这两个业务条件同时满足;在退房时,我们需要保证房间里没有物品损坏或已经进行了损坏赔偿这两个业务条件任意一个

82240

关于领域对象业务逻辑条件判断最佳实践

这篇文章其实是大健康行业直销系统番外篇,主要给大家讲讲如何在领域逻辑,有效处理业务逻辑条件判断最佳实践问题。 大家都知道,聚合根、实体和值对象这些领域对象都自身处理自己业务逻辑。...在业务处理过程,通常会有一些条件判断,当满足这些条件时,会进行不同后续处理。...在传统实现,可以通过If Else条件语句进行判断,但If Else语句在复杂领域中来检查是否满足一些业务条件存在以下问题: 1.      无法很好显示表达业务条件本身。 2.     ...无法对多个条件在不同需要地方进行灵活组合。 为了更好组织业务逻辑关于业务条件判断,最佳实践方式是将业务条件拆分得足够细,并用语义化方式表示。...举个例子:酒店业务,房间领域对象会处理预定房间领域逻辑和退房领域逻辑,在预定房间时,我们需要保证房间没有被其他人预定并且房间没有正在维护这两个业务条件同时满足;在退房时,我们需要保证房间里没有物品损坏或已经进行了损坏赔偿这两个业务条件任意一个

1.2K50

【Jetpack】Room + ViewModel + LiveData 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

( 导入依赖 | 定义 Entity 实体类 | 定义 Dao 数据库访问对象接口 | 定义数据库实例类 ) , 实现了 使用 Room 框架访问 Android SQLite 数据库操作...监听器回调 更新 View 视图 ; View 视图层 : Activity / Fragment 负责视图显示 系统组件 , 负责维护 Android 视图组件 , 显示数据由 ViewModel...) } 同时 , 需要 在 ViewModel 维护 数据库 增删改查 对应函数 , 通过调用 Repository 成员边来那个实现对数据库操作 , 查询函数 返回值是 LiveData...ViewModel 使用要点 在 Activity 组件 , 通过调用 ViewModel 视图模型获取 数据库数据 , ViewModel 调用 Repository增删改查方法 , Repository...ColumnInfo(name = "age", typeAffinity = ColumnInfo.INTEGER) var age: Int = 0 /** * 有些属性用于做业务逻辑

55520

“终于懂了“系列:Jetpack AAC完整解析(五)DataBinding 重新认知!

在xml写表达式逻辑,出错了debug不了啊,逻辑写在xml里面的话 xml 就承担了 Presenter/ViewModel 职责 变得混乱了啊。”...这里对 Jetpack AAC 及 MVVM ,做一些 补充 和 说明: 一、ViewModel 和 View 职责分离,ViewModel处理业务逻辑,View 仅展示数据及传递事件 二、ViewModel...六、ViewModelRepository 之间,建议 使用 LiveData 进行通信,就像 View 和 ViewModel 之间那样 使用回调的话,可能会有内存泄漏风险。...并且在ViewModel 使用 Transformations.switchMap 把 生命周期信息 传递到 Repository LiveData 。...LivaData 字段 九、XML 尽量 不使用逻辑表达式,把逻辑放在 ViewModel ,控件绑定终态数据 五、总结 本篇 重点讲了 DataBinding 重新认知:DataBinding

1.4K10

ViewModels and LiveData- Patterns + AntiPatterns

✅将Activity和Fragment逻辑保持在最低限度 View references in ViewModels 视图模型与Activity或Fragment有不同作用域。...Observer Pattern img 在Android设计表现层一个非常方便方法是让View(Activity或Fragment)观察(订阅)ViewModel变化。...如果你ViewModel容纳了太多代码或者有太多责任,可以考虑。 将一些逻辑转移到与ViewModel相同范围presenter。...如果repository持有对ViewModel回调引用,ViewModel将被暂时泄露。 img 如果ViewModel是轻量级,或者操作被保证快速完成,这种泄漏就不是什么大问题。...✅考虑边缘情况、泄漏以及长期运行操作会如何影响你架构实例。 ❌ 不要在ViewModel中放置对保存清洁状态或与数据有关逻辑。你从ViewModel进行任何调用都可能是最后一次。

1.1K30

Android应用架构前世今生

应用层、业务逻辑层及数据访问层。mvc思想其实也一样,都是一种软件设计典范,用一种业务逻辑、数据、界面显示分离方法组织代码,在改进和个性化定制界面及用户交互同时,不需要重新编写业务逻辑。...逻辑与界面对应id不变化则代码不用修改,大大增强了代码可维护性。 控制层(Controller) Android控制层主要就是Activity层。...项目开发,UI是容易变化,且是多样,一样数据会有N种显示方式;业务逻辑也是比较容易变化。...(回调)方式回到ViewModel,由于ViewModel与View双向绑定,使得界面得以实时更新。...使用RXJAVA对数据流进行处理,并且通过Repository进行数据集中管理,通过协议类XXXContract来对View和Presenter接口进行内部继承,在presenter实现类,可以对

85970

Android应用架构前世今生

应用层、业务逻辑层及数据访问层。mvc思想其实也一样,都是一种软件设计典范,用一种业务逻辑、数据、界面显示分离方法组织代码,在改进和个性化定制界面及用户交互同时,不需要重新编写业务逻辑。...逻辑与界面对应id不变化则代码不用修改,大大增强了代码可维护性。 控制层(Controller) Android控制层主要就是Activity层。...项目开发,UI是容易变化,且是多样,一样数据会有N种显示方式;业务逻辑也是比较容易变化。...(回调)方式回到ViewModel,由于ViewModel与View双向绑定,使得界面得以实时更新。...,并且通过Repository进行数据集中管理,通过协议类XXXContract来对View和Presenter接口进行内部继承,在presenter实现类,可以对Model数据进行操作。

58560

台库存实仓与虚仓业务逻辑设计

导读 实仓和虚仓概念是针对系统开发本身而言。简单来说,核算成本仓库可以称之为实仓,不核算成本可称之为虚仓。虚仓在系统主要过渡作用。...在台系统,虚仓即等于库存分配池,在同个仓库组单个商品库存,实仓库存之和=虚仓库存之和。 那么在商城中台库存管理,实仓与虚仓业务逻辑该怎么设计呢?...在这里需要插入说明“移仓”必要性,即移仓可以对同个仓库组虚仓进行库存调整。...比如订单购买商品a,实仓a和实仓b都有商品a库存,订单适配到虚仓a,实仓a和实仓b都有可能发货,台需要有算法会适配最优(距离最优,物流费用最优等)实仓发货。...四、货物库存流通 对于货物流通而言,实仓=发货门店,采购动作在门店系统(大多数为新零售系统)。

42020
领券