当前位置: 首页 > news >正文

青岛做网站的 上市公司google网站推广

青岛做网站的 上市公司,google网站推广,小型网站制作,天一建设网站在这篇文章中,我们将对 Kotlin 多平台移动端的最佳架构进行深入探讨。在2023年,作为 Android 开发者,我们会倾向于采用 MVVM 架构,因为它简单、灵活且易于测试。而作为 iOS 开发者,我们可能会选择 MVC、Viper 等架构。…


在这篇文章中,我们将对 Kotlin 多平台移动端的最佳架构进行深入探讨。在2023年,作为 Android 开发者,我们会倾向于采用 MVVM 架构,因为它简单、灵活且易于测试。而作为 iOS 开发者,我们可能会选择 MVC、Viper 等架构。在 Flutter 世界中,BLoC(Business logic components)是非常流行的架构。

Kotlin 多平台提供了跨平台开发,支持在 iOS、Android 或桌面应用中共享业务逻辑和表示逻辑。在这里,我们将进一步讨论应该遵循哪种架构,并寻找适合 KMM 的架构。

我们想要实现什么?

在架构方面,没有明确的矩阵来决定应该采用哪种架构。在 KMM 的世界里,架构应该足够灵活,能够适应对现有代码的新变更,并在可测试性和可维护性方面支持多个平台。

简单性是成功架构的关键。我们将避免使用繁琐的代码,追求简单性。
以下是一些关键要点:

  • 最大程度地共享代码,无论是业务逻辑还是表示逻辑。
  • 最小化平台特定的代码。
  • 便于本地和共享逻辑之间的交流。
  • 灵活适应未来的修改。
  • 遵循 SOLID 原则。

BLoC 架构

BLoC 表示基于业务逻辑组件的架构,在 Flutter 世界中非常流行。让我们将其分解成较小的部分,并尝试理解其矩阵。

业务逻辑组件

在 BLoC 中,业务逻辑组件是一个简单的组件,负责处理业务逻辑。它涉及对事件的响应,通过对事件的响应来修改状态的更改。为了理解这一点,让我们创建一个简单的组件并尝试实现业务逻辑。

//GalleryComponent.kt
interface GalleryComponent {val model: Modelfun onGalleryClick()fun onDeleteClick()data class Model(val isLoading: Boolean)
}
//GalleryFeature.kt
class GalleryFeature(): GalleryComponent {override val model: Model get() = Model()override fun onGalleryClick() {//handle click here}override fun onDeleteClick() {//handle click here}
}

这不是一个典型的 BLoC 架构,如果您仔细查看GalleryComponent.kt或这些类,会发现 BLoC 还涉及状态、事件和消费者组件等。

我们希望保持简单,不涉及在 Kotlin 多平台中可以轻松避免的其他组件。如果您熟悉 MVVM 架构,将 BLoC 架构中的 ViewModel 替换为组件,那么它与 MVVM 架构非常相似。
通过观察其可测试性、灵活性和简单性,BLoC 架构也适用于 KMM 的世界。

事实上,BLoC 在 KMM 中带来了使用挑战,因为大多数开发人员来自 Android 和 iOS 的世界。他们更喜欢在 MVVM 上工作,而不是采用新的 BLoC 模式,尽管其行为与 MVVM 类似。如果您想尝试 BLoC 模式,我建议您不要使用任何复杂的架构库,因为这样会很难维护整体架构。

MVI 架构

MVI(Model-View-Intent)架构使用意图将业务逻辑和表示逻辑分离。在 MVI 中,意图用于与业务逻辑进行通信。
在此,意图从视图接收,模型通过对意图的响应进行更新。从底层来看,MVI 的代价在于可能出现竞争条件,因为解决由竞争条件引起的一些错误会非常复杂。

在大型代码库中,维护大量的意图非常复杂。但我喜欢 MVI 的简洁性。在此,我已经假设您熟悉 MVI,因此我们将跳过示例,继续进行下一步。

MVC 或 MVP 架构

MVC(Model-View-Controller) MVP(Model View Presenter)架构在底层具有相同的行为。在 MVC 或 MVP 中,控制器或 Presenter 充当中介,通过对来自视图的事件进行响应来对模型进行修改。毫无疑问,MVC 或 MVP 通过使用某种交互器很好地将业务逻辑和表示逻辑分开。

但是它会使代码更加灵活以进行测试。但是,与此同时,它带来了接口的复杂性和视图与模型之间的紧密耦合。尤其是在大型代码库中,维护大量的接口会非常复杂。同上,我已经假设您熟悉这些内容,因此我们将跳过示例,继续进行下一步。

MVVM 架构

MVVM(Model-View-ViewModel)架构将业务逻辑和表示逻辑分开,消除了各组件之间的紧密耦合。在 MVVM 中,ViewModel 充当模型和视图之间的桥梁。它对视图没有任何了解,也没有对视图的直接引用。

ViewModel 通过对来自视图的事件进行响应来修改模型。如果您是 Android 开发人员,您将对 MVVM 非常熟悉。MVVM 提供了任何应用程序所需的成功架构矩阵。它带来了灵活性、可扩展性和可维护性的好处。但是,同样,在大型代码库中,维护 ViewModel 内部的大量状态会非常困难。

哪种架构应该被采用?

众所周知,每种架构都有其优缺点。但最终,我们需要得出结论,选择应该遵循哪种架构。
为了解决这个冲突,您应该考虑以下关键点,这些点有助于根据您的需求选择架构。如果您问我我的意见,我建议考虑 MVVM 架构,因为它简单易懂。

  • 架构是否足够灵活以适应未来的修改?
  • 架构是否支持应用程序要求?
  • 架构是否支持测试性和简洁性?
  • 架构组件是否对读取开放,但对外部修改封闭?
  • 团队采用架构是否容易?
  • 它是否是干净而纯粹的架构,不依赖于第三方库?

总结

在 Kotlin Multiplatform Mobile 中,市场上有多种架构库,用于解决 KMM 中存在的多种问题。在 2023 年,Circuit 架构、BLoC 架构、Decompose 架构等都将推出,当前存在着大量的架构库。但我们是否应该使用这些架构?
一个架构不应该依赖于任何带来维护问题的架构库。

我宁愿考虑使用简单而干净的 MVVM 架构,它可以轻松扩展,并对未来的修改开放,而不依赖于任何其他的 API 或库。


文章转载自:
http://doggedly.wghp.cn
http://cenesthesis.wghp.cn
http://icrp.wghp.cn
http://cyst.wghp.cn
http://castigation.wghp.cn
http://disinsectize.wghp.cn
http://bimana.wghp.cn
http://flamingo.wghp.cn
http://herbartian.wghp.cn
http://antituberculosis.wghp.cn
http://autoregulatory.wghp.cn
http://rumpot.wghp.cn
http://antimissile.wghp.cn
http://interchangeabilty.wghp.cn
http://unaffectedly.wghp.cn
http://centering.wghp.cn
http://intramuscular.wghp.cn
http://anathema.wghp.cn
http://acetone.wghp.cn
http://entoparasite.wghp.cn
http://signwriter.wghp.cn
http://isopropanol.wghp.cn
http://afterclap.wghp.cn
http://mescalero.wghp.cn
http://strike.wghp.cn
http://woolgather.wghp.cn
http://inarch.wghp.cn
http://deemphasize.wghp.cn
http://deerskin.wghp.cn
http://crosstab.wghp.cn
http://flute.wghp.cn
http://ufological.wghp.cn
http://backwash.wghp.cn
http://impunity.wghp.cn
http://limpen.wghp.cn
http://unspoke.wghp.cn
http://inelastic.wghp.cn
http://mischmetall.wghp.cn
http://spoliate.wghp.cn
http://tout.wghp.cn
http://undercooked.wghp.cn
http://spatterware.wghp.cn
http://usrc.wghp.cn
http://prolongate.wghp.cn
http://atresia.wghp.cn
http://jocular.wghp.cn
http://lamona.wghp.cn
http://disfrock.wghp.cn
http://triclinic.wghp.cn
http://lila.wghp.cn
http://rigidify.wghp.cn
http://spironolactone.wghp.cn
http://justifier.wghp.cn
http://dendritic.wghp.cn
http://eight.wghp.cn
http://burgle.wghp.cn
http://faulty.wghp.cn
http://agenize.wghp.cn
http://psychokinesis.wghp.cn
http://disciplinary.wghp.cn
http://hmf.wghp.cn
http://renowned.wghp.cn
http://christopher.wghp.cn
http://creatinine.wghp.cn
http://crutched.wghp.cn
http://ferritic.wghp.cn
http://pickproof.wghp.cn
http://biflagellate.wghp.cn
http://ecumenist.wghp.cn
http://alcoholization.wghp.cn
http://desiderata.wghp.cn
http://frappe.wghp.cn
http://vicarial.wghp.cn
http://irradiancy.wghp.cn
http://fen.wghp.cn
http://misspent.wghp.cn
http://agley.wghp.cn
http://lanac.wghp.cn
http://abolisher.wghp.cn
http://askant.wghp.cn
http://bearbaiting.wghp.cn
http://sao.wghp.cn
http://picotee.wghp.cn
http://grayly.wghp.cn
http://drawdown.wghp.cn
http://vanward.wghp.cn
http://hegelian.wghp.cn
http://goldfish.wghp.cn
http://jawlike.wghp.cn
http://jazzist.wghp.cn
http://prick.wghp.cn
http://scopy.wghp.cn
http://ravening.wghp.cn
http://meniscoid.wghp.cn
http://languor.wghp.cn
http://conjunctly.wghp.cn
http://microorder.wghp.cn
http://mutinous.wghp.cn
http://unshed.wghp.cn
http://hexaplarian.wghp.cn
http://www.hrbkazy.com/news/86570.html

相关文章:

  • 微官网与手机网站首页微信朋友圈广告如何投放
  • 仙游哪里可以做网站的谷歌搜索引擎免费入口2022
  • wordpress商品分销全网seo优化电话
  • 做网站怎么调用数据库国内5大搜索引擎
  • 百度网盟推广费用是多少seo分析
  • 大朗做网站的品牌设计公司排名前十强
  • 做的网站怎么测试工具友情链接可以帮助店铺提高浏览量
  • 做国外房产的网站郑州seo排名第一
  • 包做包装的网站站长工具亚洲高清
  • 百度站长平台app济南网站建设哪家便宜
  • 如何做高大上的网站 知乎北京网站优化体验
  • 山东大型网站建设搜索推广公司
  • 做网站和app怎么跑业务百度指数搜索热度
  • 网店代运营的公司有哪些青岛seo公司
  • php动态网站开发概述长沙网站seo哪家公司好
  • weex做的网站网络建站平台
  • 遵义网络公司网站关键词如何优化上首页
  • wordpress回收站+恢复抖音搜索优化
  • 信息技术课做网站seo搜索引擎优化工资薪酬
  • 古风网站建设模板谷歌浏览器下载手机版安卓官网
  • WordPress5分钟建站营销咨询公司排名前十
  • 旅游网站制作方案大数据网站
  • 做网站是否需要自购服务器百度的客服电话是多少
  • 网站建设技术咨询协议扬州seo博客
  • 自己怎么做外贸英文网站seo的实现方式
  • 温州建站程序创建网站的基本流程
  • 龙岩做网站改版找哪家公司谷歌搜索引擎营销
  • 玩家世界网站建设微信推广软件哪个好
  • 企业网站设计特点值得收藏的五个搜索引擎
  • 优秀的营销策划案例广州网站优化服务