问题标签 [clean-architecture]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Android Clean Architecture 中的登录流程
我希望使用 Clean Architecture 实现一个简单的 Firebase 身份验证 Android 应用程序,因此根据 Firebase 文档,可以检查用户是否已登录
所以我很困惑它应该把这个条件放在哪里,应该在 UseCase 还是在 Presenter 中,在同一个源对象的帮助下独立调用
就像是
所以像这样的条件,它们是否有资格作为业务逻辑?还是流逻辑?
android - 清洁架构:在哪里实现分页逻辑?
有一个 REST API,其中用户输入的搜索关键字用于查询和获取结果。有时,返回的结果太多。我不想在服务器端设置最大结果限制,所以我想在应用程序上处理它。在应用程序中,我尝试遵循Clean Architecture。我有一个片段、一个演示者、一个用例和一个 API 客户端。用户输入关键字,按下搜索按钮,关键字通过presenter传递给相关用例函数。Usecase 从 API 客户端获取结果并通过侦听器将结果传递给 Presenter。Presenter 通知片段以便显示结果。
我想显示最多十页的结果。我应该把这个控件放在哪里?用例还是演示者?
android - 释放 UseCase 后,继续在存储库层执行 observable
当演示者触发此操作但演示者在查询结束之前处理可观察对象时,执行某种“后台”操作(例如将数据保存在数据库中)的正确方法是什么?
我应该将我的可观察存储库与用例分离吗?
例子
我正在使用 RxJava 和 Dagger 开发一个遵循 Clean Architecture 和 MVP 模式的 Android 应用程序。
在对话框中,我列出了设备,并且在列表中选择它时可以连接到其中一个。当单击列表中的一个元素时,对话框被关闭,我正在将此设备设置/保存为我的存储库层中的“当前”设备,并在活动的工具栏中为徽标设置动画(有点像 Chromecast 正在做)。
在我的演示者中,我在视图分离时处置了我的用例,因此如果在关闭对话框时保存未完成,则可观察对象被处置并且设备未设置为“当前”设备。
主持人
用例
存储库
...
dependency-injection - 业务逻辑和演示者中的匕首
我已经在使用 Dagger2 并且一切正常,但我对将其集成到业务逻辑中的正确方法存有疑问。Robert Martin 在“清洁架构”中所说的是,DI 框架,因为它们是框架,是应该远离实体和用例的细节,更一般地是远离比框架更高级别的所有类.
RM 建议只允许主模块知道使用的 DI 框架,并自行注入其他类,这样您就可以用另一个 DI 框架替换一个 DI 框架,而无需更改 BL。
有没有办法以业务逻辑看不到的方式隔离 Dagger?
clean-architecture - 清洁架构中网关到框架的依赖关系
假设我想实现一个基于 Uncle Bobs Clean Architecture 的 ASP.NET 应用程序。据我了解:
- Asp.Net 本身将在框架圈内
- Asp.Net 控制器将位于网关/接口适配器层
- 我的业务逻辑将在用例/实体层
依赖规则说只允许从外圈到内圈的依赖。
据我了解,依赖规则不仅与控制流有关,而且通常与代码级别的依赖有关。
但是:为了在“网关”圈中有一个 Asp.Net 控制器,它必须从 Asp.Net Controller 类派生。
问题:这会不会违反依赖规则,因为这会引入从“网关”圈到“框架”圈的编译时依赖性?
更新:我在最近的博客文章https://plainionist.github.io/Implementing-Clean-Architecture-AspNet/中更详细地讨论了这个问题
hmvc - HMVC 和清洁架构
实际上,我正在尝试用 PHP 为医院制作一个 Web 应用程序。哪种方法会好?而且,我听说过 Clean Architecture。这可以在 PHP 中实现吗?什么可能是目录结构?谢谢你。
android - 如何注入动态创建的用例(android、clean architecture、dagger2)
我正在创建一个 Android 应用程序并希望遵守干净的架构。例如,我有一个活动,它有一个创建用例的演示者。在那个内层,我有一个存储库接口(由用例知道),它由一个具体的存储库实现,我们称之为 repsoitoryImpl(用例不知道)。我在之前的项目中所做的就是在activity中创建presenter和repositoryImpl,并将repositoryImpl作为repository传递给presenter。然后,只要有来自活动的动作(例如按下按钮),演示者就可以创建一个新的用例并将存储库传递给它。
这可行,但是 a) 用例的构造函数可能会变得很长 b) UI 了解所有其他“外部”事物,例如 repositoryImpl。所以我想DI来救援!并开始尝试 Dagger 2。但是,我目前的解决方案似乎并不“正确”。我想要的是我可以在一个用例中拥有一个带有@inject 注释的存储库,并且一个repositoryImpl 被注入。但是我发现,在“注入链”的开头,我必须在匕首组件上调用 inject() 。在大多数示例中,这是在活动中完成的。但是随后我必须将演示者注入活动中,并将用例注入演示者,以便能够将内容注入用例。这个对吗?问题是我想用不同的参数动态创建用例而不是注入它们。
所以我目前的解决方案是将匕首“AppComponent”作为Android应用程序类中的静态字段,然后在我的用例中调用
这允许我在用例中注入东西。但是随后用例依赖于不符合干净架构的匕首。因为框架依赖应该只出现在外层。
这个问题有一个通用的解决方案吗?我理解错了吗?
android - 带有网络调用的访问者模式 - 从访问者更新 android UI 的最佳方式
我正在使用访问者模式将支付处理从 android 中的 UI 代码中抽象出来。我对我应该传递给访问者构造函数的内容有一些疑问,以便视图在完成处理付款后得到回调。
让我向您展示我到目前为止所拥有的:
我正在处理 2 个支付系统,因此有两种支付策略(brainTree 和 Stripe):
我正在使用鲍勃叔叔的干净架构,所以我的网络调用是通过用例进行的,而且我使用 mvp 作为我的表示层,所以如果需要我可以访问演示者和用例。
所以我的问题再次是关于 PaymentStrategyVistor 类,如果我将演示者作为构造函数参数传递,你会怎么想。例如,我可以调用presenter.doBrainTreePayment("someToken");
我可以在visitors visit(BrainTreePaymentStrategy brainTreePaymentStrategy)
方法中执行此操作。这就是你们都会这样做的吗?
android - R算作android依赖吗?
我想使用 Clean Architecture 构建一个应用程序,并且我想将图像的可绘制 id 存储在演示器中:
我现在的问题是我可以在演示者中使用 R 还是算作一个 android 依赖项?
java - 干净的架构:在不同的 .jar 文件中分离 IO 和 Core
在干净的架构中,结构是这样的:
核:
核心类.java
SomeDAOInterface.java
IO
- SomeDAOInterfaceImpl.java(实现 SomeDAOInterface)
如果我应该将 Core 和 IO 拆分为不同的 .jar 文件、不同的项目,我应该如何处理 IO 部分中的“SomeDAOInterface”依赖关系?它仅包含在核心部分中,因此如果没有编译器错误(找不到类 SomeDAOInterface),我无法真正实现它。