问题标签 [architectural-patterns]

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.

0 投票
1 回答
33 浏览

ios - 在 iOS ViewControllers 中替换部分功能的好策略

我在一个有很多 UI 控件的 iOS 应用程序中有 VC。我现在需要在特定状态下替换或“模拟”其中一些控件。在某些情况下,这只是禁用按钮操作,但在某些情况下,发生的操作需要用完全不同的东西替换。

我真的不喜欢在代码库中到处乱扔这种检查的想法。

在 Android 中,我可以将每个 Fragment/Activity 子类化并在那里构建功能,然后在插入 Fragment 或启动 Activity 时执行 if/else。

但是在带有 Storyboards/IBActions 和 Segues 的 iOS 上,UI 和 VC 确实是紧密耦合的。您最终要么复制 UI 视图,要么向已经很大的 VC 添加大量繁琐的代码。

在 iOS 中处理这个问题的最佳方法是什么?

我想避免做的示例代码:

0 投票
1 回答
209 浏览

azure - Azure 服务总线,使用 SDK 检查 ASB 是否受到限制

我们使用 Azure 服务总线将消息从一个服务发送到另一个服务。生产者在 1-2 小时内产生了大量的消息(几百万条)。结果,我们的服务总线(我们使用高级 Azure 服务总线)受到限制,并且我们在生产者和消费者方面收到错误。我想知道我们是否可以通过使用 Azure SDK(我们使用 ASB Java SDK)以某种方式检查 ASB 的负载,如果它很高,我们可以减慢将消息发送到队列/主题的服务。 我也知道我们可以添加更多高级单位,但这是我们将采取的最后一个选择。

我们使用什么:

  • Azure 服务总线 Java SDK
  • Java 9 和 Spring Boot 2.0
  • Azure 服务总线高级版

你对我的案子有什么建议吗?任何建议——模式、框架、ASB SDK 功能都会很棒。

0 投票
3 回答
556 浏览

c++ - 如何选择正确的架构/设计模式

我正在做自己的研究项目,并且在正确选择架构/设计模式方面非常挣扎。

在这个项目中,“系统”启动后,我需要在后台做一些事情(任务、处理、显示数据等),同时能够使用键盘与系统交互并发送一些命令,例如“给我这个特定对象的状态”或“这个对象中的数据是什么”。

所以我的问题是——什么样的软件架构/设计模式可以应用于这个特定的项目?类/对象之间的交互应该如何组织?对象应该如何创建?

例如,“事件驱动架构”或“微内核”可以在这里应用吗?非常感谢对有用资源的一些参考!非常感谢您!

0 投票
1 回答
51 浏览

design-patterns - 设计 - 在 SQL 中存储可执行代码的替代方案

我正在开发一个小型浏览器游戏,我遇到了一个设计问题,我能想到的唯一解决方案很糟糕。

它是一个典型的网络应用程序 - Angular2/HTML/JS 前端、带有 PostgreSQL DB 的 Java 服务器、托管在 nginx 和 Tomcat 上的内容

用户可以与具有自定义行为的各种 NPC(非玩家角色)进行交互。我已经通用化了这个逻辑,NPC 作为配置行存储在数据库中,

  • 编号:1
  • 名称:Sam The NPC
  • ImgURL:“www.mygame.com/img/npc/sam.png”

访问 mygame.com/npc/1 会在 JS 中向 Java 中的后端 API 发出一个 GET,以从数据库中获取该行,然后绑定并显示这些值。将这些作为配置行存储在数据库中允许我添加新的 NPC 或编辑现有的 NPC,而无需重新部署服务器或前端代码。

到目前为止,标准。但是,我希望 NPC Sam 友好,拜访他会增加玩家的金钱。另一个 NPC,史蒂夫,应该是敌对的,并从玩家库存中移除金钱或物品。NPC 鲍勃有时可以解锁玩家任务。

这就是我卡住的地方:每个 NPC 都有完全不同的任意行为意味着我需要每个 NPC 的可执行代码。

在我看来,我的两个选择都很糟糕,但方式不同。

  1. 每个 NPC 都有自己的 Java 类,并且是服务器逻辑中的第一类实体。所有 NPC 都实现一个interact()方法,添加或更改 NPC 需要代码推送。

  2. 每个 NPC 都会在数据库中获得一个包含可执行 JS 的新列,以通过 Java 中的脚本引擎运行。这有点危险,但也很麻烦。编写可以通过与 Java 代码库交互然后将其作为字符串保存在数据库中来调用 DB 函数的 JS 是很笨拙的。

我目前正在使用选项 2,但并不太深入,我想知道是否有一种公认的方式来处理这样的事情会更好。

0 投票
3 回答
884 浏览

design-patterns - 设计模式,架构模式,架构风格和架构之间有什么区别?

谁能描述一下设计模式、架构模式、架构风格和架构之间的区别?提前致谢。

0 投票
1 回答
870 浏览

android - Android MVVM:视图是否应该为每个用户交互(甚至是微不足道的交互)通知视图模型(只有 UI 结果/没有数据)

根据我的小知识:

在 MVVM (Model-View-ViewModel) 架构模式中,视图应该通知视图模型进行用户交互,例如按钮单击。视图模型通过更新视图将要观察的可观察数据流 (LiveData) 来响应。因此视图会更新 UI 并且用户会看到结果。

但是,让我们考虑一些微不足道的情况,当用户操作只有 UI 后果而没有相关或操纵数据时。例如:一个按钮,当单击它时,会切换另一个 UI 小部件的可见性。

我的问题是如何在正确应用 MVVM 的同时处理这个简单的案例?我应该在不通知 ViewModel 的情况下直接更新 UI 吗?

0 投票
1 回答
137 浏览

architecture - SOA 模式与客户端-服务器模式有何不同?

  • SOA 模式由服务提供者和服务消费者组成。

  • 它似乎反对单体应用程序。

以上两个也适用于客户端-服务器模式。那么 SOA 模式与客户端-服务器模式有何不同呢?

SOA 模式必须使用客户端-服务器模式吗?SOA 模式不能使用客户端-服务器模式吗?

0 投票
1 回答
944 浏览

design-patterns - Broker 是一种设计模式并在 Gamma 等人的设计模式中提到吗?

在 Bass 等人的《实践中的软件架构》一书中,提到:

代理模式定义了一个运行时组件,称为代理,它调解大量客户端和服务器之间的通信。

图 13.6 给出了 Gamma、Helm、Johnson 和 Vlissides [Gamma 94] 记录的经纪人模式的原始版本。

我没有找到Gamma 等人的设计模式书。包括一个名为 Broker 的模式。Gamma 等人的设计模式中是否提到了 Broker?

我看到 Broker 在Wikipedia中被列为架构模式。Broker 是设计模式还是架构模式?

0 投票
1 回答
173 浏览

java - 我应该为每个活动创建演示者和模型吗?

我读过一些关于在 Android 中使用 MVP 模式的文章。对我来说最好的方法是创建合同(每个模型、视图和演示者一个接口)。问题是我应该为每个活动创建这样的合同,或者如果我的应用程序中有几个活动,如何实现它。谢谢

0 投票
1 回答
326 浏览

node.js - Sidecar 与中间件

我正在使用 express 构建一个微服务,并且需要对每个请求进行一些操作(比如日志记录)。我发现 sidecar 对此很有用,但是使用 express 中间件可以实现相同的功能。是否有任何场景建议使用边车而不是使用中间件?