关于将ui与业务逻辑分离吗
参考https://softwareengineering.stackexchange.com/questions/423680/is-it-really-possible-to-decouple-the-ui-from-the-business-logic?utm_source=Iterable&utm_medium=email&utm_campaign=the_overflow_newsletter
What?Why?How?
当不同的人谈论将UI与业务逻辑分离时,他们有时会表示不同的意思:
-
它们可能意味着不要在UI层内实现任何独立于UI的逻辑-应该将在UI外部有用的所有逻辑放在其他位置。
您的示例显示了这种情况。
CanUserInputPromoCode
在用户界面之外可能很有用,或者至少不限于特定的用户界面设计。最自然的地方CanUserInputPromoCode
可能不是DTO,而是业务对象Basket
。万一Basket
对象可能在非UI进程内使用(例如,在自动化测试中),这将允许重用它。 -
或者,它们的意思是使系统与特定的UI技术脱钩。可以通过引入MVC,MVP或MVVM之类的体系结构来实现,其中有一个额外的视图模型层或演示者层,其中包含UI控制逻辑,但通过接口与UI通信(因此保持了UI技术可互换)。
注意MVC,MVP或MVVM不一定用于UI技术交换。例如,在Web应用程序中,设计人员通常希望或需要服务器上的UI控制逻辑,而UI在客户端上使用HTML或Javascript。或者他们希望UI控制逻辑成为自动化测试的主题。
是的,UI控制逻辑也是“业务逻辑”。您的购物车示例可能会要求在结帐之前,在进行任何财务交易之前,使用清晰可见的“立即付款”按钮,该按钮具有一定的大小和颜色。这种业务逻辑不能与UI本身分离,但是当他们谈论与UI分离时,这在六角结构或洋葱结构中并不意味着。
其他
六角形架构(软件) https://en.wikipedia.org/wiki/Hexagonal_architecture_(software)
六角形体系结构将系统分为几个松耦合的可互换组件,例如应用程序核心,数据库,用户界面,测试脚本以及与其他系统的界面。这种方法是传统分层体系结构的替代方法。
每个组件都通过多个裸露的“端口”相互连接。通过这些端口的通信根据其目的遵循给定的协议。端口和协议定义了可以通过任何适当的技术手段(例如,以面向对象的语言,远程过程调用或Web服务的方法调用)实现的抽象API。
洋葱架构 https://jeffreypalermo.com/2008/07/the-onion-architecture-part-1/
我的思考
架构设计来源于分析系统中的稳定和不稳定因素,并且将之解耦
将不稳定因素作为外部的东西,通过依赖反转与其他系统连接
- 上一篇 如何锻炼即兴演讲的能力
- 下一篇 如何看不會寫代碼的人對代碼,架構指手畫腳