问题标签 [solid]

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 投票
0 回答
63 浏览

api - 在 Rest Api 和 Django 中遵循 SOLID 原则

嗨,我在django中有两个模型,例如 DeviceDataData与Device多对一相关 ,我的 api 返回了 Devices 列表,或者 api 返回了与 Device 相关的 Data 列表。android开发人员说我有一个请求,所以你必须将tow api合并到onece,我试图说这不是最佳实践并且不遵循SOLID原则。

现在我们应该做什么,我们应该采取什么方法?

0 投票
1 回答
47 浏览

reactjs - 依赖倒置原则在前端开发中的作用

我在学习 React 时遇到了一个叫做“SOLID”的东西,尤其是依赖倒置原则。然后在做了一些研究之后,我发现了这些文章https://medium.com/@vittorioguerriero/dependency-inversion-in-react-58f1545dc039https://dmitripavlutin.com/frontend-architecture-stable-and-volatile-依赖项/。问题是在 React 中实现 DI 原则是最佳实践吗?因为在我看来,React 中依赖倒置原则的实现使代码更加复杂。

0 投票
2 回答
111 浏览

ios - MVC、Swift 中的依赖注入

我正在按照 SOLID 原则和 MVC 架构构建一个简单的应用程序。我想在我的 NetworkClass 中解析来自服务器的图像,并在我的 ViewController 中的 CollectionView 中显示它们。这是我的视图控制器:

这是我的 NetworkService 类(稍后我将进行解析):

问题是,当我运行此代码时,它在viewDidLoad()调用networkService!. 我看到问题在于实例化 NetworkServiceProtocol。我应该在哪里以及如何实例化它?任何帮助表示赞赏!

0 投票
1 回答
59 浏览

typescript - Is it wrong for a class to call another Error Class directly?

I'm new to the SOLID principles. I have this scenario:

Is that wrong? Am I allowed to call ErrorClass directly from Class1 or am I supposed to inject ErrorClass into Class1 as a dependency? I'm worried that my Class1 constructor can get bloated if I have to inject different error classes along with other classes it might also depend on?

Grateful for any help or advice!

Thanks

0 投票
1 回答
41 浏览

.net - 这是否违反了开放/封闭原则?

我用 .NET Core 制作了一个 webapi,并且我有一个“启动”类。这个类有一个“ConfigureServices”方法,它说:

// 这个方法被运行时调用。使用此方法向容器添加服务。

但是每次添加一个新的服务,我都需要“修改”这个方法,但是它违反了开放/封闭的原则。

如果我使用 use 和“IF”和“ELSE”标准来做与我修改此方法相同的事情。

所以,对于这个你有什么想法?

0 投票
3 回答
105 浏览

java - 避免违反开闭原则的设计模式

我正在用 Java 构建一个简单的游戏。我有几个课程,我省略了与我的问题无关的字段:

到目前为止,当我收集法术时,它必须进入巫师的法术书。战士不能收集法术,他们没有法术书。如果我从 OOP POV 中正确理解,Collectable 必须能够在收集时决定它的去向(库存或法术书),因此我在上面的解决方案。

我的问题是我必须在 Spell.collect(Character) 中使用类型转换才能将 Spell 放入向导的 spellBook,因为默认情况下,spellBook 在 Character 上不可见,我认为它不应该是,因为那时战士也会有法术书。这违背了开闭原则,因为如果我想添加一个也可以收集法术的术士,我必须修改法术以尝试将它也施放给术士。

您能否建议一个解决方案或设计模式,以便我可以在不违反开闭原则的情况下收集我的收藏品?

0 投票
1 回答
56 浏览

c# - 为什么这个类层次结构违反 LSP?

下面是来自在线教程的代码(https://code-maze.com/liskov-substitution-principle/):

那么我们可以这样做:

所以我们可以把子实例new EvenNumbersSumCalculator(numbers)SumCalculator evenSum

但是教程说版本 1 不符合 Liskov 原则,我们需要这样做:

我不明白为什么版本 1 不符合 Liskov 原则?

0 投票
0 回答
59 浏览

c# - Console应用中的DI原理

我正在.NET Core 的控制台应用程序中开发一个小游戏,其中应用程序的开始是接口StartPlay方法。IGamePlay我有一个GamePlay实现这个接口的类。

在我的主要方法中,我有以下代码:

在我的 main 方法中,我直接调用了 main 方法最后一行中StartPlaygamePlay类。

这是否违反了 DI 原则?如果是,从 main 实例化它的最佳方法是什么?

0 投票
1 回答
31 浏览

php - 我需要了解如何在 PHP 项目中使用策略设计?

注意:这是一个 PHP 项目

我有一种情况,我为我的项目使用了 2 个 API 提供程序。它们与它们(API)提供的信息相似。我必须设置正确的方式,因为也许明天会添加更多的 API。所以我的项目需要一些方法。基本的,这是我到目前为止所拥有的:

由于每个子类都实现了这个接口,我按接口编码

现在,我有一种情况,SpaceShips 有更多方法要添加,比如 getEquipment() 和更多信息,其他类没有实现的方法。Trucks 还有更多其他人没有实现的方法,例如 hasTrailer()、trailerLength() 等...

我的问题是,现在该怎么办,我应该使用接口隔离,并将接口添加到实现这些方法的类中,然后检查实例化的对象是否具有此方法而不是运行,否则会出现异常,或者将缺少的模型添加到抽象中类 A 和 B,并将方法覆盖到使用这些方法的类中,或者也许有更好的方法来解决这个问题。顺便说一句,设计模式很新……

也许我过度工程,但我真的想以一种好的方式做到这一点。

谢谢

0 投票
1 回答
71 浏览

blockchain - 在合约构造函数中使用地址函数?

想知道是否有人可以解释这一点。我正在学习 freeCodeCamp.org 的“Solidity, Blockchain, and Smart Contract Course - Beginner to Expert Python Tutorial”。

在第二课中,我们创建了一个合约工厂,我们在其中存储了一个合约数组,然后创建了一个函数来通过索引检索合约并在其上调用一个函数。

他是这样做的:SimpleStorage(address(simpleStorages[_simpleStorageIndex])).store(_simpleStorageNumber)

我不明白 SimpleStorage(address(...)) 部分。我了解对数组进行索引并获取存储,但是我对其进行了测试,并且效果相同:simpleStorages[_simpleStorageIndex].store(_simpleStorageNumber)

这个地址功能是什么?我假设它获取合约实例的地址。那么为什么我们将它传递给 SimpleStorage 的构造函数(?)?为什么在不通过地址的情况下在实例本身上调用 store 时执行所有这些操作。

谢谢!!

编辑:整个合同: